我正在使用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文件运行应用程序的多个实例?
答案 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的限制。
我看到它的方式,你有三个选择:
使用其他内容增加TCD以添加更多功能。 你提到了一个:ssh。
使用其他部署解决方案。
制作一个。 因为你已经确切地知道你想要什么,所以你可以简单地写一些脚本来实现它。
答案 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”