3

Tomcat6 一直忽略我的 META-INF/context.xml。当我尝试查找“tt”时,我不断收到“名称 tt 未绑定在此上下文中”(请参阅​​“详细信息”)。

当我将 META-INF/context.xml 的内容放在 server.xml 的“上下文”标签中时,它可以工作。我还检查了$Tomcat-base/Catalina/localhost 是否为空,所以我的 META-INF/context.xml 没有被覆盖。


细节:

Tomcat版本:6.0.10

这是我的 Webroot 结构:

Webroot
       |-META-INF
       | |-context.xml
       |
       |-WEB-INF
             |-web.xml

context.xml 的内容:

<Context>
    <Environment name="tt" value="this is a string" type="java.lang.String"></Environment>
</Context>

server.xml 中此 webroot 的上下文标记:

<Context path="/test" docBase="E:\javaProjects\TestProject\Webroot" reloadable="true"></Context>

我查找“tt”的方式:

...
Context ic = new InitialContext();
Context ec = (Context) ic.lookup("java:comp/env");
String str = (String) ec.lookup("tt");
System.out.println("str is "+str);

我得到的错误:

javax.naming.NameNotFoundException: Name tt is not bound in this context
4

2 回答 2

5

如果我从 server.xml 中删除并仅在<Context>META-INF/context.xml

<Context>在两个地方都定义了时它不起作用。

其次,将您的类型更改为 String,而不是 Integer

<Environment name="tt" value="this is a string" type="java.lang.String"></Environment>
</Context>
于 2011-09-15T11:34:24.300 回答
0

您不能在两个不同文件中定义的一个主机中拥有两个上下文,这是问题的根源。欲了解更多信息,请阅读这篇文章。

于 2012-05-10T07:41:46.787 回答