我们有一个包含以下文件夹/文件的网络应用程序:
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应用程序中的每个子文件夹创建上下文?我们绝对不是自己创造这些背景。
答案 0 :(得分:0)
这里的解决方案是将webapp路径设置为默认位置,并为每个上下文指定特殊文件夹(在Tomcat 4下,您可以通过设置webapp位置来执行此操作,但显然行为已更改)。
足够简单的修复。