Подтвердить что ты не робот

Что такое 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-адрес базы данных. Это так?!! Но что делает первый взгляд?

4b9b3361

Ответ 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