Bonjour,

je m'arrache les cheveux avec JNDI depuis ce matin, et j'ai enfin trouvé mon problème. Sauf que du coup je ne suis plus sûr de comprendre comment marche le bidule...

Je m'explique.

J'ai une application que je fais tourner en phase de dev sur un serveur Tomcat.

Je dispose d'une ressource jndi déclarée dans le fichier context.xml auquel j'accède directement via l'interface d'eclipse :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<Resource name="jdbc/plouf"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@xx:1557:PLOUF"
              username="xx" password="xx" maxActive="20" maxIdle="10"
              maxWait="-1"/>
Dans mon code j'y accède simplement via les lignes suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
initContext	= new InitialContext();
envContext	= (Context)initContext.lookup("java:comp/env");
ds		= (DataSource)envContext.lookup("jdbc/plouf"); 
conn		= ds.getConnection();
Et ça marche. J'ai donc ensuite essayé de faire tourner le war sur glassfish.

J'ai donc commencé par créer ma ressource jndi sur le serveur (pool + ressource), et j'ai déployé le war quand soudain paf, NameNotFoundException, No object bound to name java:comp/env/jdbc/plouf

Pour que ça marche j'ai dû modifier mon code source :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
initContext	= new InitialContext();
ds		= (DataSource)initContext.lookup("jdbc/plouf"); 
conn		= ds.getConnection();
Et ma question finale : pourquoi ai-je dû retirer mon préfixe java:comp/env, sachant que, du coup, mon war ne trouve plus la ressource sur Tomcat(NameNotFoundException: Le Nom jdbc n'est pas lié à ce Contexte)


Si quelqu'un voulait éclairer mes petites lanternes, je lui serai très reconnaissant


Merci !