Was ist Java: Comp / Env?


81

Was ist gemeint mit java:comp/env?

Wie sieht das aus?

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

machen ?

Ich verstehe, dass ein Look-up wie:

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

sucht nach dem Namen MyDatasourcein der context.xmloder web.xml, um die URL der Datenbank zu erhalten. Ist es so ? !! Aber was macht der erstere Lookup?



4
@ Marko Topolnik aber das beantwortet meine Frage nicht.
SaplingPro

3
Bitte öffnen und lesen Sie den Link, bevor Sie abstimmen, um diese Frage zu schließen. Gehen Sie nicht einfach nach dem Titel.
SaplingPro

1
Es sieht sicher nach einer Antwort für mich aus. Es ist ein Root-Namespace, der vom Container bereitgestellt wird, damit Sie Ihre Ressourcen nachschlagen können.
Marquis of Lorne

Dies ist eine gute Frage für Leute, die versuchen, von Weblogic nach Tomcat zu migrieren, zum Beispiel
ACV

Antworten:


72

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

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

Ermöglicht das Definieren einer Variablen, die direkt auf diesen Knoten zeigt. Es erlaubt zu tun

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

eher, als

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

Relative Pfade statt absoluter Pfade. Dafür wird es verwendet.


Wofür ist dieser Knoten gedacht? Es würde viele Knoten im JNDI-Baum geben.
SaplingPro

7
Ich bekomme immer noch nicht das Gefühl, was eigentlich ist java:comp/env.
SaplingPro

9
Jede JEE-Komponente (Webapp, EJB) kann Eigenschaften definieren, die für diese Komponente lokal sind. Und diese Eigenschaften sind über zugänglich java:comp/env. Siehe zum Beispiel tomcat.apache.org/tomcat-7.0-doc/… . EJBs haben das Gleiche.
JB Nizet

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.