【发布时间】:2010-10-27 06:32:49
【问题描述】:
我们有一个包含以下文件夹/文件的网络应用程序:
某个文件夹\ 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-mapping 机会。
有人对如何攻击这个有任何建议吗?
编辑:更多信息:
稍微研究一下,我发现 JNDI 资源不适用于任何子文件夹中的 jsp 文件,但 JNDI 资源在 web.xml 中配置的 servlet 中可用。看起来 Tomcat 可能正在为每个子文件夹创建单独的上下文。这可能是怎么回事?
编辑:更多信息:
我添加了一个显示上下文路径的调试行,而且果然 - 子文件夹中的 jsp 文件确实在它们自己的上下文中运行。那么 Tomcat 是如何为 Web 应用程序中的每个子文件夹隐式创建上下文的呢?我们绝对不会自己创建这些上下文。
【问题讨论】:
标签: tomcat