2012-07-24 88 views
57

¿Qué se entiende por java:comp/env?¿qué es java: comp/env?

en que se ve arriba como:

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

hacer?

entiendo que una consulta como:

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

mira hacia arriba para el nombre MyDatasource en el context.xml o web.xml para obtener el URL de la base de datos. ¿Es así? !! Pero, ¿qué hace la primera opción?

+1

posible duplicado de [cómo java: comp/env/DO] (http://stackoverflow.com/questions/4099095/what-does-javacomp-env-do) –

+4

@Marko Topolnik pero eso no responde mi pregunta. – saplingPro

+3

** Por favor, abra y lea el enlace antes de votar para cerrar esta pregunta. No busque el título. ** – saplingPro

Respuesta

46

java:comp/env es el nodo en el á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 apunta directamente a este nodo. Permite hacer

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

en lugar de

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

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

+0

¿Para qué sirve este nodo? Habría muchos nodos en el árbol JNDI. – saplingPro

+2

Todavía no tengo la sensación de lo que en realidad es 'java: comp/env'. – saplingPro

+7

Cada componente JEE (aplicación web, EJB) puede definir propiedades que son locales para este componente. Y estas propiedades son accesibles a través de 'java: comp/env'. Consulte http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#web.xml_configuration, por ejemplo. Los EJB tienen el mismo tipo de cosas. –