【发布时间】:2015-10-04 21:59:44
【问题描述】:
我有一个 servlet,它有一个类,它需要从 Tomcat 8 的全局 JNDI 资源中引用一个值。我已经在 Tomcat server.xml 文件中这样定义了资源:
<GlobalNamingResources>
<Environment name="MAX_LANDMARK_RESULT" value="100000" type="java.lang.Integer" override="false"/>
</GlobalNamingResources>
我在 webapp context.xml 中定义了一个资源链接:
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/pathname">
<ResourceLink name="MAX_QUERY" global="MAX_LANDMARK_QUERY" type="java.lang.Integer"/>
</Context>
我还在 servlet web.xml 中定义了引用:
<resource-env-ref>
<resource-env-ref-name>MAX_LANDMARK_QUERY</resource-env-ref-name>
<resource-env-ref-type>java.lang.Integer</resource-env-ref-type>
</resource-env-ref>
我试图在我的 servlet 中像这样引用它:
try {
Context ct = new InitialContext();
Context ctx = (Context) ct.lookup("java:comp/env");
MAX_QUERY_SIZE = (Integer)ctx.lookup("MAX_QUERY");
} catch (NamingException ex) {
MAX_QUERY_SIZE = 99999;
}
我已经三次检查了我如何设置 XML 文件,它们应该是正确的,所以我确定问题出在我如何定义 ct.lookup("java:comp/env"); 行。如何定义它以便它找到正确的资源而不是抛出 NamingException?
编辑: 所以我一直在深入调试器并检查我的上下文,并且 MAX_QUERY 显示为链接到 MAX_LANDMARK_QUERY 的继承资源链接。在拉取该资源链接时我是否应该做一些特别的事情,以便它在我的代码中引用 MAX_LANDMARK_QUERY?
【问题讨论】:
标签: java tomcat servlets jndi tomcat8