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.