2012-07-24 17 views
57

cosa si intende per java:comp/env?cos'è java: comp/env?

Che cosa l'aspetto su come:

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

fare?

Capisco che un look-up simile:

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

guarda in alto il nome MyDatasource nella context.xml o web.xml per ottenere l'URL del database. È così? !! Ma cosa fa il primo sguardo?

+1

possibile duplicato del [cosa java: comp/env/do] (http://stackoverflow.com/questions/4099095/what-does-javacomp-env-do) –

+4

@ Marko Topolnik, ma questo non risponde alla mia domanda. – saplingPro

+3

** Si prega di aprire e leggere il link prima di votare per chiudere questa domanda. Non basta andare dopo il titolo. ** – saplingPro

risposta

46

java:comp/env è il nodo dell'albero JNDI in cui è possibile trovare le proprietà per il componente Java EE corrente (una webapp o un EJB).

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

consente di definire una variabile che punta direttamente a questo nodo. Permette di fare

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

piuttosto che

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

percorsi relativi invece di percorsi assoluti. Questo è quello per cui è usato.

+0

Qual è _this_ nodo significato per? Ci sarebbero molti nodi nell'albero JNDI. – saplingPro

+2

Ancora non ho la sensazione di cosa sia in realtà 'java: comp/env'. – saplingPro

+7

Ogni componente JEE (webapp, EJB) può definire proprietà locali per questo componente. E queste proprietà sono accessibili tramite 'java: comp/env'. Vedere http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#web.xml_configuration per esempio. I bean hanno lo stesso tipo di cose. –