【问题标题】:Tomcat and Context pathsTomcat 和上下文路径
【发布时间】:2011-01-02 06:39:44
【问题描述】:

我在 Netbeans 中创建了一个 Web 应用程序,并将该应用程序打包在一个名为“aa-bb.war”的文件中。当我在 netbeans 中运行项目时,我可以通过“localhost:8080/aa/bb”访问它。这一切都很好。

不过,将 .war 文件移动到标准的 tomcat 安装中会给我带来问题。当我将 .war 放入“webapp”目录时,它会分解为“webapp/aa-bb”,但我真正想要的是“webapp/aa/bb”(注意中间的“-”与“/” “aa”和“bb”)......所以bb应该在“aa”的子目录中。

我对此的理解是因为tomcat使用.war的文件名来创建爆炸的目录,所以由于war被称为“aa-bb”,它显然使用了连字符。我的“context.xml”文件确实有正确的路径“aa/bb”,但我读过 Tomcat 5+ 将忽略 .war 中指定的上下文路径,而是根据文件名创建一个路径。

如何强制 tomcat 使用子目录(结果 url 中的差异似乎很小(“aa-bb”与“aa/bb”),但实际上这是一个大问题,因为我赢了现在不要进入(只会使事情复杂化)。

【问题讨论】:

    标签: tomcat context.xml contextpath


    【解决方案1】:

    你有什么选择?不知道Tomcat最近不理path=""了。

    1. 把apache放在前面,使用mod_redirectmod_proxy将Apache中的aa/bb请求汇集到Tomcat中的aa-bb。

    2. 在 web 应用程序旁边使用 UrlRewriteFilter,具体取决于您使用的任何 web 框架(如果有的话?)。调用你的 webapp aa.war,然后告诉 UrlRewriteFilter 将应用内 /bb/ 的请求集中到 / 代替。

    【讨论】:

      【解决方案2】:

      tomcat 的标准部署结构是所有应用程序都在第一级层次结构中。您放在应用程序文件夹中的任何 context.war 文件最终都可以通过http://host/context 访问。我很确定您不能强制使用您提到的子目录 aa/bb 但您可以通过以下方式欺骗实现:(1)制作应用程序 aa.war ,(2)在您的 aa 应用程序中创建一个名为 bb 的目录,其中包含所有您的 jsps,以及 (3) 如果您有 servlet 或过滤器,那么还将它们的映射更改为 bb/servlet。

      【讨论】:

      • 这很有趣,从未尝试过...不过我使用 netbeans 进行打包,您知道如何让 netbeans / ant 将所有内容转储到子目录“bb”中吗?跨度>
      猜你喜欢
      • 2016-04-03
      • 1970-01-01
      • 2011-02-06
      • 2015-07-19
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      相关资源
      最近更新 更多