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?
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.
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