2011-06-02 64 views
2

我有大约6或7个webapps,这些webapps被配置为在Tomcat(6)上部署为根应用程序。因此,每个应用程序可以稍后访问http://host:8080/在Tomcat的相同实例中部署多个配置为Root的webapps

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

有关如何做到这一点以及最佳方法的建议?

+4

我可以问你为什么这些应用程序必须是一个根应用程序?正常情况下,将它们按URL分开... – KoW 2011-06-02 15:57:15

+0

这是客户的要求之一。我讨论过这个问题,显然我必须保持这样。 – 2011-06-02 16:44:42

+0

如果应用程序具有相同的网址,用户将如何区分它们? – maks 2011-11-11 23:40:33

回答

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

我不认为你可以逃脱只使用一个实例。

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

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

至于这是否是正确的方法,我不得不不同意。你很可能会遇到Port in Use地狱。必须管理tomcat使用的所有不同端口是非常困难和愚蠢的。

相关问题