在同一个Tomcat实例中部署多个配置为Root的Web应用程序

时间:2011-06-02 15:53:52

标签: java tomcat

我有大约6或7个webapps,它们被配置为在Tomcat(6)上部署为根应用程序。因此,http://host:8080/

可以稍后访问每个应用

我必须在一台计算机上部署这些Web应用程序以用于QA环境。该团队评论了使用一个Tomcat实例,并将每个webapp部署在不同的端口上,因此它们仍将作为根应用程序部署。

有关如何执行此操作以及最佳方法的建议吗?

2 个答案:

答案 0 :(得分:2)

您需要查看虚拟主机。

根上下文的常规主机查找类似于http://www.mymachine.com:8080/,当你想在同一个上下文中放置两个应用程序时,Tomcat不能这样做,因为它不知道哪个应用程序应该响应这样的查找。通常,Tomcat通过在“应用程序”路径中推广不同应用程序来解决这些冲突,如此

http://www.mymachine.com:8080/app1 (maps to) "Application 1"
http://www.mymachine.com:8080/app2 (maps to) "Application 2"

但是,对于虚拟主机,可以配置单个Web服务器以响应多个主机名查找。通过这样的配置,主机名可以用作区分器。

http://app1.mymachine.com:8080/(root) (maps to) "Application 1"
http://app2.mymachine.com:8080/(root) (maps to) "Application 2"

请注意,此类配置要求您执行额外的工作,以确保DNS知道两个主机名并将它们映射回同一个Tomcat服务器。然后,必须将Tomcat(或Apache,如果在Tomcat服务器前运行Apache服务器)配置为将请求的主机名和应用程序路径映射到Web应用程序,而不是仅通过应用程序路径映射到Web应用程序。

Here is the documentation on how to do this in Tomcat 6.0。请注意,这不适用于您需要进行必要的网络工作才能使两个主机名解析到同一台计算机。祝你好运!

答案 1 :(得分:1)

我认为你不能只使用一个实例。

如果您需要将每个应用程序作为根应用程序运行,那么您必须在不同的端口上运行多个tomcat实例。

要部署为根应用程序,只需将应用程序命名为ROOT.war并将其放在Tomcat的webapps目录中。

至于这是否是正确的做法,我不得不反对。你很可能会遇到使用中的港口地狱。管理tomcat使用的所有不同端口将是非常困难和愚蠢的。