需要在Tomcat中运行同一Web应用程序的多个实例

时间:2017-11-10 03:17:05

标签: tomcat servlets

我正在使用Tomcat 8.5,并将webapp部署到默认的webapps目录(/var/lib/tomcat8/webpps/MyWebApp.war)。

现在我想运行同一个webapp的第二个实例。我以为我可以在上下文目录(/etc/tomcat8/Catalina/localhost/MyWebApp2.xml)中创建一个新的MyWebApp2.xml文件,并设置appBase =“MyWebApp.war”,这样我就可以运行第二个实例无需上传和维护单独的war文件。

然而,当我这样做时,我得到了这个Tomcat错误:

docBase [/var/lib/tomcat8/webapps/MyWebApp.war] inside the host appBase has been specified, and will be ignored

听起来我可以通过以下方式解决此问题:1)上传具有不同名称的单独.war文件,或2)将第一个.war文件放在默认webapp文件夹之外,但我不喜欢这些解决方案是不是可以从默认的webapps目录中的单个.war文件运行应用程序的多个实例?

2 个答案:

答案 0 :(得分:0)

我也在使用Tomcat 8.5,并且部署同一个应用程序的另一个实例非常容易。

您所要做的就是制作war文件的副本。 没有必要乱用任何配置文件。 新实例的路径和版本将从war文件的名称派生。

例如,如果原始应用程序的war文件是myapp.war, 您只需在webapps目录中执行此操作:

copy myapp.war foo.war

Tomcat将检测新的war文件,并在几秒钟内在/foo部署一个新实例。

要在更深的路径部署并分配版本,请分别使用###。 例如,这个:

copy myapp.war foo#bar##9.war

将在路径/foo/bar部署应用程序并分配版本9

<强>更新

你应该提到在你的问题中使用Tomcat Client Deployer,因为我的建议已经满足你的两个原始条件:1)没有上传另一个war文件和2)没有把war文件放在webapps目录之外

据我所知,TCD使用Tomcat Manager作为后端,而Tomcat Manager只将war文件上传到webapps目录,这解释了TCD的限制。 我看到它的方式,你有三个选择:

  1. 使用其他内容增加TCD以添加更多功能。 你提到了一个:ssh。

  2. 使用其他部署解决方案。

  3. 制作一个。 因为你已经确切地知道你想要什么,所以你可以简单地写一些脚本来实现它。

答案 1 :(得分:-1)

为每个使用描述符文件。也就是/ conf / Catalina / localhost中的多个描述符文件。每个人都得到一个不同的名称(app1.xml,app2.xml),所以他们部署在/ app1,/ app2等,但你引用相同的.war。

app1.xml:

  

Context path =“/ app1”docBase =“/ path / to / MyWebApp.war”reloadable =“false”

app2.xml:

  

Context path =“/ app2”docBase =“/ path / to / MyWebApp.war”reloadable =“false”