Tomcat6一直忽略我的META-INF / context.xml。当我试着查看“tt”时,我一直得到“名字tt不受此上下文约束”(请参阅“详细信息”)。
当我将META-INF / context.xml的内容放在server.xml中的'context'标记内时,它可以正常工作。我还检查过 $ 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
答案 0 :(得分: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>
答案 1 :(得分:0)
在两个不同文件中定义的一个主机中不能有两个上下文,这是问题的根源。有关详细信息,请参阅this文章。