¿Qué es java: comp / env?

81

lo que significa java:comp/env?

¿Cómo se ve hacia arriba?

Context envContext = (Context)initContext.lookup("java:comp/env");

hacer

Entiendo que una búsqueda como:

(DataSource)envContext.lookup("jdbc/MyDatasource")

busca el nombre MyDatasourceen context.xmlo web.xmlpara obtener la URL de la base de datos. Es tan ? !! Pero, ¿qué hace la primera búsqueda?

SaplingPro
fuente
1
posible duplicado de ¿Qué hace java: comp / env /?
Marko Topolnik
4
@Marko Topolnik pero eso no responde a mi pregunta.
saplingPro
3
Abra y lea el enlace antes de votar para cerrar esta pregunta. No se limite a buscar el título.
saplingPro
1
Seguro que me parece una respuesta. Es un espacio de nombres raíz proporcionado por el contenedor para que busque sus recursos.
Marquis of Lorne
Esta es una buena pregunta para las personas que intentan migrar de Weblogic a Tomcat, por ejemplo
ACV

Respuestas:

73

java:comp/env es el nodo del árbol JNDI donde puede encontrar propiedades para el componente Java EE actual (una aplicación web o un EJB).

Context envContext = (Context)initContext.lookup("java:comp/env");

permite definir una variable que apunte directamente a este nodo. Permite hacer

SomeBean s = (SomeBean) envContext.lookup("ejb/someBean");
DataSource ds = (DataSource) envContext.lookup("jdbc/dataSource");

más bien que

SomeBean s = (SomeBean) initContext.lookup("java:comp/env/ejb/someBean");
DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/dataSource");

Rutas relativas en lugar de rutas absolutas. Para eso se usa.

JB Nizet
fuente
¿Para qué está destinado este nodo? Habría muchos nodos en el árbol JNDI.
saplingPro
7
Todavía no tengo la sensación de lo que realmente es java:comp/env.
saplingPro
9
Cada componente JEE (webapp, EJB) puede definir propiedades que son locales para este componente. Y estas propiedades son accesibles a través de java:comp/env. Consulte tomcat.apache.org/tomcat-7.0-doc/… por ejemplo. Los EJB tienen el mismo tipo de cosas.
JB Nizet