co to znaczy java:comp/env
?
Jak wygląda wygląd:
Context envContext = (Context)initContext.lookup("java:comp/env");
zrobić ?
Rozumiem, że wyszukiwanie takie jak:
(DataSource)envContext.lookup("jdbc/MyDatasource")
wyszukuje nazwę MyDatasource
w context.xml
lub, web.xml
aby uzyskać adres URL bazy danych. Czy tak jest? !! Ale co robi ten pierwszy?
java
jakarta-ee
jndi
saplingPro
źródło
źródło
Odpowiedzi:
java:comp/env
to węzeł w drzewie JNDI, w którym można znaleźć właściwości dla bieżącego komponentu Java EE (aplikacji internetowej lub EJB).Context envContext = (Context)initContext.lookup("java:comp/env");
umożliwia zdefiniowanie zmiennej wskazującej bezpośrednio na ten węzeł. To pozwala
SomeBean s = (SomeBean) envContext.lookup("ejb/someBean"); DataSource ds = (DataSource) envContext.lookup("jdbc/dataSource");
zamiast
SomeBean s = (SomeBean) initContext.lookup("java:comp/env/ejb/someBean"); DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/dataSource");
Względne ścieżki zamiast bezwzględnych ścieżek. Do tego służy.
źródło
java:comp/env
.java:comp/env
. Zobacz na przykład tomcat.apache.org/tomcat-7.0-doc/ ... EJB mają ten sam rodzaj rzeczy.Jest to globalna tablica haszująca w pamięci, w której można przechowywać zmienne globalne według nazwy.
Schemat adresu URL „java:” powoduje, że JNDI szuka
javaURLContextFactory
klasy, która jest zwykle udostępniana przez kontener aplikacji, np. Tutaj jest implementacja Tomcata javadocZobacz także NamingManager.getURLContext
źródło