что такое java: comp / env?


что означает java:comp/env ?

как выглядит вверх:

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

делать ?

Я понимаю, что выглядеть как :

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

ищет имя MyDatasource на context.xml или web.xml чтобы получить URL-адрес базы данных. так ли это ? !! но что делает первый взгляд вверх ?

2 64

2 ответа:

java:comp/env - это узел в дереве JNDI, где можно найти свойства для текущего компонента Java EE (веб-приложение или EJB).

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

позволяет определить переменную, указывающую непосредственно на этот узел. Это позволяет делать

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");

относительные пути вместо абсолютных путей. Вот для чего он используется.

это глобальная хэш-таблица в памяти, где вы можете хранить глобальные переменные по имени.

схема url" java: "заставляет JNDI искать javaURLContextFactory класс, который обычно предоставляется вашим контейнером приложения, например здесь осуществление администрирования, документация

см. также NamingManager.getURLContext