¿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?



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.


¿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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.