【发布时间】:2011-05-05 04:29:52
【问题描述】:
在连接一些 JNDI 工厂 bean 时,我花了太多时间试图找出一些错误。问题原来是,而不是这个......
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/loc"/>
</bean>
其实是我写的……
<bean id="someId" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc/loc"/>
</bean>
我推断java:comp/env/ 可能引用了一些环境变量并使其最终查看我的上下文文件。唯一的区别是java:comp/env/。从专家的口中,这有什么作用?
如果值中没有 java:comp/env/ 前缀,我会收到一条错误消息,提示 “名称 jdbc 未绑定在此上下文中”。
【问题讨论】:
-
您最初使用的是哪一个?您的问题意味着您错误地使用了第二个示例(
jdbc/loc,因此java:comp/env/jdbc/loc是正确的),而 cherouvim 的答案意味着您错误地使用了第一个示例(java:comp/env/jdbc/loc,因此jdbc/loc是正确的) .无论如何,真正的答案是:这取决于当前上下文。 -
如暗示的那样,不起作用的确实缺少 java:comp/env/jdbc/loc。指向的上下文文件包含“loc”资源。 “当前”上下文的可能性是什么?
-
我在这里回答了这个问题:stackoverflow.com/a/66325569/1051589。