2012-07-24 5 views
57

was ist mit java:comp/env gemeint?Was ist Java: comp/env?

Wie sieht das oben wie:

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

tun?

Ich verstehe, dass eine Nachschau wie:

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

für den Namen nachschlägt MyDatasource im context.xml oder web.xml die URL der Datenbank zu erhalten. Ist es so? !! Aber was macht der ehemalige Look?

+1

möglich Duplikat [Was Java ist: comp/env/do] (http://stackoverflow.com/questions/4099095/what-does-javacomp-env-do) –

+4

@Marko Topolnik aber das beantwortet meine Frage nicht. – saplingPro

+3

** Bitte öffnen und lesen Sie den Link vor der Abstimmung, um diese Frage zu schließen. Geh nicht einfach nach dem Titel. ** – saplingPro

Antwort

46

java:comp/env ist der Knoten in der JNDI-Struktur, in dem Sie Eigenschaften für die aktuelle Java EE-Komponente (eine Webanwendung oder eine EJB) finden können.

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

ermöglicht die Definition einer Variablen, die direkt auf diesen Knoten zeigt. Es ermöglicht tun

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

statt

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

Relative Pfade anstelle von absoluten Pfade. Dafür wurde es verwendet.

+0

Für was ist dieser_knoten gedacht? Es würde viele Knoten in der JNDI-Struktur geben. – saplingPro

+2

Ich habe immer noch nicht das Gefühl, was eigentlich 'java: comp/env' ist. – saplingPro

+7

Jede JEE-Komponente (Webanwendung, EJB) kann Eigenschaften definieren, die für diese Komponente lokal sind. Und diese Eigenschaften sind über 'java: comp/env' zugänglich. Siehe http://tomcat.apache.org/tomcat-7.0-doc/jndi-resources-howto.html#web.xml_configuration zum Beispiel. EJBs haben die gleiche Art von Sache. –