Что такое java: comp/env?
что подразумевается под java:comp/env
?
Что выглядит так:
Context envContext = (Context)initContext.lookup("java:comp/env");
do?
Я понимаю, что поиск выглядит следующим образом:
(DataSource)envContext.lookup("jdbc/MyDatasource")
ищет имя MyDatasource
в context.xml
или web.xml
, чтобы получить URL-адрес базы данных. Это так?!! Но что делает первый взгляд?
Ответы
Ответ 1
java:comp/env
- это node в дереве JNDI, где вы можете найти свойства для текущего компонента Java EE (веб-приложение или EJB).
Context envContext = (Context)initContext.lookup("java:comp/env");
позволяет определить переменную, указывающую непосредственно на этот node. Это позволяет делать
SomeBean s = (SomeBean) envContext.lookup("ejb/someBean");
DataSource ds = (DataSource) envContext.lookup("jdbc/dataSource");
а не
SomeBean s = (SomeBean) initContext.lookup("java:comp/env/ejb/someBean");
DataSource ds = (DataSource) initContext.lookup("java:comp/env/jdbc/dataSource");
Относительные пути вместо абсолютных путей. Это то, для чего он использовался.
Ответ 2
Это глобальная хэш-таблица в памяти, в которой вы можете хранить глобальные переменные по имени.
Схема URL-адреса "java:" заставляет JNDI искать класс javaURLContextFactory
, который обычно предоставляется вашим контейнером приложения, например. здесь реализация Tomcat javadoc
См. также NamingManager.getURLContext