Цитата https://web.archive.org/web/20140227201242/http://v1.dione.zcu.cz/java/docs/jndi-1.2/tutorial/beyond/misc/policy.html
В корневом контексте пространства имен находится привязка с именем «comp», которая привязана к поддереву, зарезервированному для привязок, связанных с компонентами. Название «comp» - это сокращение от «компонент». В корневом контексте нет других привязок. Однако корневой контекст зарезервирован для будущего расширения политики, в частности для именования ресурсов, которые привязаны не к самому компоненту, а к другим типам объектов, таким как пользователи или отделы. Например, будущие политики могут позволить вам называть пользователей и организации / отделы, используя такие имена, как «java: user / alice» и «java: org / engineering».
В контексте «comp» есть две привязки: «env» и «UserTransaction». Имя «env» привязано к поддереву, которое зарезервировано для привязок компонента, связанных со средой, как определено его дескриптором развертывания. «env» - это сокращение от «окружающая среда». J2EE рекомендует (но не требует) следующую структуру для пространства имен "env".
Таким образом, привязка, которую вы сделали из spring или, например, из дескриптора контекста tomcat, по умолчанию идет в java: comp / env /
Например, если ваша конфигурация:
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="foo"/>
</bean>
Затем вы можете получить к нему доступ напрямую, используя:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/foo");
или вы можете сделать промежуточный шаг, чтобы вам не нужно было указывать «java: comp / env» для каждого извлекаемого ресурса:
Context ctx = new InitialContext();
Context envCtx = (Context)ctx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("foo");
jdbc/loc
и, следовательноjava:comp/env/jdbc/loc
, правильный), в то время как ответ cherouvim подразумевает, что вы неправильно использовали первый пример (java:comp/env/jdbc/loc
и, следовательноjdbc/loc
, правильный). Тем не менее, настоящий ответ таков: это зависит от текущего контекста.