web-dev-qa-db-fra.com

qu'est-ce que Java: comp / env?

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?

72
saplingPro

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.

64
JB Nizet

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

7
Rich