Tomcat - 在不使用Apache HTTPD的情况下嵌套webapp路径

时间:2018-05-18 00:36:58

标签: java tomcat path war contextpath

我再次尝试我可能不应该做的事情......但是......通常我觉得这是可能的。这一次,我真的是我的手指。

我有一个Tomcat 8实例。在这个例子中,我有:

  • AppA(WAR) - 主要Web应用程序
  • AppB(WAR) - 辅助子应用程序(更多功能)但人们将使用特殊路径(如“服务”)进行访问。

想要运行Apache HTTPD(或任何其他附加服务层)。我也希望在tomcat级别上做这个似乎没有用,而不是试图通过入口网络/ waf / etc或通过应用程序本身伪造它(允许开发人员处理其他所需的编码)。

我真正想要的是以一种自己处理它的方式配置Tomcat:

  • 用户可以访问https://host.com/AppA
  • 用户可以使用该功能,如果他们转到https://host.com/AppA/service(指向AppB,但用户永远不会看到WAR名称“AppB” - 将WAR名称更改为“service”是完全可以接受的这样可以节省一些理智)

现在我尝试按照虚拟主机配置(https://tomcat.apache.org/tomcat-8.0-doc/virtual-hosting-howto.html)进行少量更改,看看我是否能够满足我所需要的......并且......它失败了,但我认为如果tomcat可以这样做,我可以在那里得到它。

到目前为止我尝试过:

  • 使用添加的条目更新了[tomcat] / conf / server.xml
  • 添加了一个名为[tomcat] / AppBapp 的新“webapps”文件夹(AppB.war就在这里)
  • 添加了[tomcat] / conf / Catalina / localhost / AppB.xml 上下文文件。

我看过一些帖子,他们有点这样做,但方向相反(根网站目录指向一些自定义服务器路径)。我想我可以得到这个配置,但我不得不问......这个策略是否适用于我正在尝试用tomcat做什么?或者我完全在错误的球场?

非常感谢您的光临。永远感激!

1 个答案:

答案 0 :(得分:1)

事实上,您只希望通过Tomcat配置嵌套上下文

有关Tomcat User's List的讨论,您可以查看有关嵌套上下文archived thread

根据我的理解,给出的解决方案依赖于两种上下文配置:

$TOMCAT_BASE/conf/Catalina/localhost/A.xml
$TOMCAT_BASE/conf/Catalina/localhost/A#service.xml

目录webapps/Awebapps/A#service(此目录包含已部署的appB内容)。