在Tomcat 6上部署两个或更多应用程序时,我无法使用JNDI.请考虑以下情形:我有2个webapps,其中每个web.xml包含一个JNDI参数.
web.xml webapp A:
<env-entry>
<env-entry-name>testEntry</env-entry-name>
<env-entry-value>value A</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
web.xml webapp B:
<env-entry>
<env-entry-name>testEntry</env-entry-name>
<env-entry-value>value B</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
当我部署两个webapps并查找testEntry的值时,两个 webapps都返回值A.似乎只有第一个加载的web.xml中的JNDI参数可用.根据我对JNDI的理解,每个web.xml都包含webapp特定的JNDI值,这些值仅在各自的上下文中可用.我在做什么/想错了?
这导致了我的下一个问题.如何定义所有上下文中可用的全局JNDI参数?在tomcat文档中,我读过你应该使用{CATALINA_HOME} /conf/context.xml来达到这个目的.但环境条目在上下文中不可用.将它们放在{CATALINA_HOME} /conf/web.xml中使它们可以全局访问,但我怀疑这是正确的方法.
这是我的Java代码来查找它们:
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
String value = (String)envCtx.lookup("testEntry");
任何帮助都会受到欢迎,因为关于JNDI的好文档是伤痕.