Java 配置上下文查找以在Tomcat8上查找JNDI资源环境

Java 配置上下文查找以在Tomcat8上查找JNDI资源环境,java,tomcat,servlets,jndi,tomcat8,Java,Tomcat,Servlets,Jndi,Tomcat8,我有一个servlet,它有一个类需要引用Tomcat8的全局JNDI资源中的值。我在Tomcat server.xml文件中定义了如下资源: <GlobalNamingResources> <Environment name="MAX_LANDMARK_RESULT" value="100000" type="java.lang.Integer" override="false"/> </GlobalNamingResources> 我已经三次检查了如

我有一个servlet,它有一个类需要引用Tomcat8的全局JNDI资源中的值。我在Tomcat server.xml文件中定义了如下资源:

<GlobalNamingResources>

<Environment name="MAX_LANDMARK_RESULT" value="100000" type="java.lang.Integer" override="false"/>

</GlobalNamingResources>
我已经三次检查了如何设置XML文件,它们应该是正确的,因此我确信问题来自如何定义
ct.lookup(“java:comp/env”)行。我如何定义它以使它找到正确的资源,而不是抛出NamingException

编辑:
所以我一直在潜入调试器并检查我的上下文,MAX\u QUERY显示为一个继承的资源链接,链接到MAX\u查询。我是否应该在拉资源链接时做一些特殊的事情,以便它在我的代码中引用MAX\u LANDMARK\u QUERY?

对于其他有相同问题的人,我找到了一个解决方案

应该在Tomcat context.xml文件中定义。这是您必须对值进行的唯一定义

在代码中,您应该这样调用它:

Context ctx = new InitialContext();
value = (valuetype) ctx.lookup("java:/comp/env/valueName");
<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>
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;
    }
Context ctx = new InitialContext();
value = (valuetype) ctx.lookup("java:/comp/env/valueName");