【问题标题】:Tomcat 6 appears to be creating separate contexts for subfoldersTomcat 6 似乎正在为子文件夹创建单独的上下文
【发布时间】: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


    【解决方案1】:

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

    很容易修复。

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 1970-01-01
      • 2013-09-23
      • 2016-10-03
      • 2016-05-24
      • 2012-02-12
      • 2018-12-02
      • 1970-01-01
      • 2012-05-28
      相关资源
      最近更新 更多