webentwicklung-frage-antwort-db.com.de

Was ist Java: comp / env?

was ist damit gemeint Java:comp/env?

Wie sieht das aus:

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

machen ?

Ich verstehe, dass eine Suche wie:

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

sucht nach dem Namen MyDatasource im context.xml oder web.xml, um die URL der Datenbank abzurufen. Ist es so? !! Aber was macht der erste Lookup?

72
saplingPro

Java:comp/env Ist der Knoten in der JNDI-Struktur, auf 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 die Definition einer Variablen, die direkt auf diesen Knoten verweist. 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.

64
JB Nizet

Es ist eine speicherinterne globale Hashtabelle, in der Sie globale Variablen nach Namen speichern können.

Das URL-Schema "Java:" veranlasst JNDI, nach einer javaURLContextFactory -Klasse zu suchen, die normalerweise von Ihrem App-Container bereitgestellt wird, z. hier ist Tomcats Implementierungs-Javadoc

Siehe auch NamingManager.getURLContext

7
Rich