IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[Debutant][DataSource] connexion à une base de données


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut [Debutant][DataSource] connexion à une base de données
    Salut à tous !

    Bon voilà après avoir cherché "DataSource" (2000 réponses) puis "DataSource débutant" (50 réponses pas des plus basiques ! Le seul qui pourrait éventuellement m'aider, surtout pour la partie fichier annexe, est cette discussion) sur le forum, je me décide à poster.

    J'aimerais me connecter à ma base de données en utilisant les DataSources (on me les a conseillés à défaut des DriverManagers).

    Mais voilà j'ai beau regarder partout sur Google, je ne trouve jamais la même chose donc pour ce qui est de partir sur de bonnes bases... la galère !!!

    En gros j'aimerais savoir comment on implémente les DataSources et ce qu'ils ont besoin (JNDI, truc.xml,... ?).

    D'après ce que j'ai lu, les DataSources on besoin d'un serveur.xml et d'un web.xml.
    Et ils s'implémentent de la façon suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Context ctx = new InitialContext();
    DataSource ds = (DataSource)ctx.lookup(" ");
    Connection con = ds.getConnection("login", "pass");
    con.setAutoCommit(false);
     
    .
    ..
    ...
    requetes, etc...
    ...
    ..
    .
     
    con.close();
    Par contre déjà, que dois-je mettre à dans le lookup ? C'est le nom de ma base de données ou c'est l'endroit ou il va aller chercher le JNDI ?

    DataSource ds = (DataSource)ctx.lookup(" ");
    Aussi, pourquoi cette ligne :

    Connection con = ds.getConnection("login", "pass");
    Ca sert à quoi le JNDI si on met le login/pass en dur ici ?

    Voilà si qqun pouvait me confirmer tout ça,
    ça serait super sympas !

    Merci pour votre compréhension.

    Julien.

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Bon alors je pense avoir compris le lookup,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataSource ds = (DataSource)ctx.lookup(" ");
    Il sert à rechercher dans un fichier bien determiné les parametres de connexion à la base de données.

    D'où ma question de la dernière fois...
    Ca sert à quoi le JNDI si on met le login/pass en dur ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection con = ds.getConnection("login", "pass");
    Apparemment j'ai vu qu'on pouvait juste mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Connection con = ds.getConnection();
    sans argument...

    Par contre, dans quel fichier sont censées se trouver les propriétés de connexion ? Est-ce dans un jndi.properties ? J'ai cru lire que c'était dans un fichier peuimportelenom-ds.xml (on doit absolument le mettre ds le dossier deploy à la main, on ne peut pas l'intégrer dans le projet ?) ?

    Merci de votre réponse.

    Julien.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    up

  4. #4
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Bonjour,

    Peut-être ceci pourrait t'aider:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    
    package myproject.tools;
    
    import org.apache.commons.dbcp.datasources.SharedPoolDataSource;
    import org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS;
    
    public class UtilsDb
    {
        private static final String driverNameSYBASE = 
            "com.sybase.jdbc3.jdbc.SybDriver";
    
        public static 
            SharedPoolDataSource 
                setupSharedPoolDataSource(String url, String user, String password, int maxConnections, int idleConnections)  throws Exception
        {
    
            SharedPoolDataSource sharedDatasource = new SharedPoolDataSource();
            DriverAdapterCPDS myConnectionPoolDatasource = new DriverAdapterCPDS();
    
            myConnectionPoolDatasource.setDriver(driverNameSYBASE);
    
            myConnectionPoolDatasource.setUrl(url);
            myConnectionPoolDatasource.setUser(user);
            myConnectionPoolDatasource.setPassword(password);
    
            sharedDatasource.setConnectionPoolDataSource(
            myConnectionPoolDatasource);
    
            sharedDatasource.setMaxActive(maxConnections);
            sharedDatasource.setMaxIdle(idleConnections);
            sharedDatasource.setMaxWait(1000);
    
            return sharedDatasource;
        }
    }
    
    Comment utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    private SharedPoolDataSource myDatasource = null;
    private String url;
    private String userName;
    private String password;
    private int maxDbConnection;
    private int minDbConnection;
    
    // Récupérer la valeur des properties (paramètres) pour url,userName, 
    // password, maxDbConnection et minDbConnection
    
    // Initialisation de datasource
    try {
        myDatasource = 
            UtilsDb.setupSharedPoolDataSource(urlCachesDB, userCachesDB, passwordCachesDB, maxDbConnection, minDbConnection);
    }
    catch (Exception e) {
        System.err.println(e,getMessage());
        // Sortir avec erreur
    }
    
    // Utilisation
    
    Connection myConnection = null;
    
    try
    {
        connection = myDatasource.getConnection();
    
    
        // Accès à la DB pour lecture,écriture ....
    
       
       
        
    }
    catch (Exception e) {
        System.err.println(e.getMessage());
        // Sortir avec erreur
    }
    finally {
        connection.close();
        myDatasource.close();
    }
    

  5. #5
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    pas répondu à ta question.

    Il faut utiliser le fichier properties or configuration.

  6. #6
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par défaut
    Ton application est deployée au sein d'un serveur d'application ? Car sinon, les Datasource ne sont pas utilisables (à moins de gruger)...

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/07/2013, 12h21
  2. Réponses: 1
    Dernier message: 25/09/2005, 16h18
  3. ERREUR DE CONNEXION à une base de donnée ACCESS protégée
    Par unionriton dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/05/2005, 09h35
  4. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  5. Réponses: 3
    Dernier message: 29/03/2004, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo