Tomcat 6似乎正在为子文件夹创建单独的上下文

时间:2010-10-27 06:32:50

标签: tomcat

我们有一个包含以下文件夹/文件的网络应用程序:

somefolder \   view1.jsp   view2.jsp

我们还有一个配置如下的servlet:

<servlet>
    <servlet-name>Servlet1</servlet-name>
    <servlet-class>com.etc.Servlet1</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>Servlet1</servlet-name>
    <url-pattern>/somefolder/</url-pattern>
</servlet-mapping>

期望的结果是:

在我们的Tomcat 5网站上,以上工作正常。在我们开发的Tomcat 6系统上,以上工作正常。

但是在我们新的Tomcat 6网站上,以上内容无效。导航到http://some.site/somefolder

时出现404错误

如果我们将文件系统中的somefolder \文件夹重命名为somefolder2 \,则servlet可以正常工作。

鉴于不同安装的行为之间的差异,这让我想知道它是否与Tomcat配置无关 - 可能Tomcat正在查看物理目录,并使用其他一些servlet处理(默认servlet可能?? ),永远不要给我们的servlet映射机会。

有没有人对如何攻击这个有任何建议?

编辑:更多信息:

挖掘一下,我发现JNDI资源不能用于任何子文件夹中的jsp文件,但是在web.xml中配置的servlet中可以使用JNDI资源。看起来Tomcat可能正在为每个子文件夹创建单独的上下文。这可能是怎么回事?

编辑:更多信息:

我添加了一个显示上下文路径的调试行,而且确实 - 子文件夹中的jsp文件确实在他们自己的上下文中运行。那么Tomcat如何隐式地为Web应用程序中的每个子文件夹创建上下文?我们绝对不是自己创造这些背景。

1 个答案:

答案 0 :(得分:0)

这里的解决方案是将webapp路径设置为默认位置,并为每个上下文指定特殊文件夹(在Tomcat 4下,您可以通过设置webapp位置来执行此操作,但显然行为已更改)。

足够简单的修复。