ce que l'on entend par Java:comp/env
?
À quoi ressemble le regard:
Context envContext = (Context)initContext.lookup("Java:comp/env");
faire ?
Je comprends qu'un look-up comme:
(DataSource)envContext.lookup("jdbc/MyDatasource")
cherche le nom MyDatasource
dans le context.xml
ou web.xml
pour obtenir l'URL de la base de données. Est-ce vrai? !! Mais que fait le premier?
Java:comp/env
est le noeud de l’arborescence JNDI où vous pouvez trouver les propriétés du composant Java EE actuel (une application Web ou un EJB).
Context envContext = (Context)initContext.lookup("Java:comp/env");
permet de définir une variable pointant directement sur ce noeud. Ça permet de faire
SomeBean s = (SomeBean) envContext.lookup("ejb/someBean");
DataSource ds = (DataSource) envContext.lookup("jdbc/dataSource");
plutôt que
SomeBean s = (SomeBean) initContext.lookup("Java:comp/env/ejb/someBean");
DataSource ds = (DataSource) initContext.lookup("Java:comp/env/jdbc/dataSource");
Chemins relatifs au lieu de chemins absolus. C'est pour ça que ça sert.
C'est une table de hachage globale en mémoire où vous pouvez stocker des variables globales par nom.
Le schéma d'URL "Java:" oblige JNDI à rechercher une classe javaURLContextFactory
, qui est généralement fournie par le conteneur de votre application, par exemple. voici l'implémentation de Tomcat javadoc
Voir aussi NamingManager.getURLContext