Tomcat6忽略META-INF / context.xml

时间:2011-09-15 07:32:34

标签: tomcat jndi context.xml

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

2 个答案:

答案 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文章。