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 :
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
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"/>
Et ça marche. J'ai donc ensuite essayé de faire tourner le war sur glassfish.
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();
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 :
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)
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();
Si quelqu'un voulait éclairer mes petites lanternes, je lui serai très reconnaissant
Merci !
Partager