Цитуючи 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".
Отже, прив'язка, яку ви робили з весни або, наприклад, з дескриптора контексту 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
є правильним). Незалежно від цього справжня відповідь: це залежить від поточного контексту.