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

Java EE Discussion :

Code de récupération du DataSource [JNDI]


Sujet :

Java EE

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 76
    Points
    76
    Par défaut Code de récupération du DataSource
    Bonjour,

    Je réalise actuellement une application web et j'utilise une base de données MySQL pour stocker les données persistantes. Pour gérer les connexions à cette base, j'utilise le mécanisme du pool de connexions, qui permet de maintenir un certain nombre de connexions disponibles pour l'application (gain de performance).
    À partir de là, le code suivant permet d'accéder à mon DataSource (objet qui me permet d'accéder aux connexions) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DataSource ds = null;
    try {
        Context initialContext = new InitialContext();
        Context localContext = (Context) initialContext.lookup("java:comp/env/");
        ds = (DataSource) localContext.lookup("jdbc/my_db");	
    } catch (NamingException e) {
        e.printStackTrace();
        System.exit(-1);
    }
    Et j'accède alors facilement aux connexions de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Connection connection = null;
    try {
        connection = ds.getConnection();
    } catch (SQLException e) {
        e.printStackTrace();
        System.exit(-1);
    }
    Je me demande alors comment mettre à disposition mon objet DataSource une bonne fois pour toute pour mon application, c'est-à-dire où dois-je placer le code de mise à disposition du DataSource (premier cadre ci-dessus) pour que mon objet DataSource soit accessible en tout lieu et en tout temps dans mon application ?
    À moins qu'il ne faille ré-exécuter le code du premier cadre ci-dessus à chaque fois que je veux obtenir une connexion ?
    J'espère que je me fais bien comprendre...
    D'avance merci pour vos éclaircissements !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il est préférable de réexécuter le lookup à chaque fois. Ca ne bouffe pas en temps (tout se fait en interne dans la jvm) et il n'y a aucune garantie dans la spec J2EE que la datasource peux être conservé ad-vitam.

    En fait, des conteneur comme jboss te laissent modifier les datasources (par exemple quand on change le pass de la base de données, quand on veux ajuster la taille du pool, etc) sans redémarrer l'application. Mais ça ne marche que si l'application fait un lookup à chaque fois. Car tous les bouts de code utilisant l'ancienne datasource vont se chopper une exception à l'appel de getConnection

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 76
    Points
    76
    Par défaut
    OK, merci pour cette réponse !

    Je dois donc exécuter mes deux lookup à chaque fois que je veux obtenir mon DataSource. Mais est-ce que je dois également ré-instancier le contexte initial ?
    C'est-à-dire exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Context initialContext = new InitialContext();
    Ou est-ce que ça je peux l'exécuter une fois pour toute et le réutiliser ? Ça coûte quand même la création d'un objet à chaque fois... Mais bon, s'il faut le ré-instancier, je m'y plierai

    Merci

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Le contexte initial et le premier lookup ne sont pas nécesaires à chaque fois, puisque java:comp/env est spécifique à la webapp. Si il est supprimé, c'est que la webapp est supprimée.

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Mars 2008
    Messages : 19
    Points : 76
    Points
    76
    Par défaut
    Ok ok, je vois plus clair maintenant, encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. a/s code de récupération données de formulaire
    Par Jatrofa dans le forum Débuter
    Réponses: 0
    Dernier message: 05/06/2012, 13h08
  2. Réponses: 3
    Dernier message: 20/04/2006, 18h59
  3. [MySQL] Récupération de code php dans une base de données
    Par kitana dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/03/2006, 01h25
  4. Execution programme et récupération du code retour
    Par Dr_GonZO dans le forum Langage
    Réponses: 5
    Dernier message: 12/07/2005, 16h20
  5. Soucis de récupération de code
    Par sheira dans le forum ASP
    Réponses: 16
    Dernier message: 06/12/2004, 12h42

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