0

我在 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”与“aa/bb”)似乎有一个小的差异,但它实际上是一个大问题,因为我不会得到现在进入(只是使事情复杂化)。

4

2 回答 2

0

What options do you have? I didn't know that Tomcat disregards the path="" lately.

  1. Put apache in front and use mod_redirect or mod_proxy to funnel requests for aa/bb in Apache to aa-bb in Tomcat.

  2. Use the UrlRewriteFilter iside the webapp, depending on whatever web framework you're using(if any?). Call your webapp aa.war, then tell UrlRewriteFilter to funnel requests for /bb/ inside the app to just / instead.

于 2010-01-07T19:58:09.567 回答
0

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

于 2010-01-07T02:18:23.127 回答