Tomcat和Context路径

时间:2010-01-06 22:35:21

标签: tomcat context.xml contextpath

我在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的文件名来创建爆炸的目录,因此战争被称为“aa-bb”,它显然使用了连字符。我的“context.xml”文件确实有正确的路径“aa / bb”,但我读过Tomcat 5+将忽略.war中指定的上下文路径,而是创建一个基于文件名的路径。

如何强制tomcat使用子目录(它可能看起来像生成的url中的一个小差异(“aa-bb”vs“aa / bb”),但它实际上是一个大问题,因为我赢了现在进入(只是让事情复杂化)。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你有什么选择?我不知道Tomcat最近会忽视path=""

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

  2. 根据您使用的任何网络框架(如果有的话),使用UrlRewriteFilter以及webapp。调用您的webapp aa.war,然后告诉UrlRewriteFilter将应用程序内/ bb /的请求汇集到/替代。