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

     2023-02-26     165

关键词:

【中文标题】需要在 Tomcat 中运行同一个 Web 应用程序的多个实例【英文标题】:Need to run multiple instances of the same web application in Tomcat 【发布时间】:2018-04-23 05:33:52 【问题描述】:

我使用的是 Tomcat 8.5,其中一个 webapp 部署到了默认的 webapps 目录 (/var/lib/tomcat8/webpps/MyWebApp.war)。

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

但是,当我这样做时,我得到了这个 Tomcat 错误:

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

听起来我可以通过以下两种方式解决这个问题这些解决方案。难道不能从默认 webapps 目录中的单个 .war 文件运行应用程序的多个实例吗?

【问题讨论】:

【参考方案1】:

我也在使用 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。

    使用其他部署解决方案。

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

【讨论】:

我正在使用 Tomcat 客户端部署从 ant 任务部署我的应用程序。这会将单个 .war 文件放入默认的 webapps 目录中。我真的不想将手动任务添加到 Tomcat 框中并复制 .war 文件。似乎应该有一种方法可以从单个 .war 文件运行多个应用程序实例。 顺便说一句,另一个选项几乎可以完成我希望将单个 .war 文件放在默认 webapps 文件夹之外的操作。我可以在 Catalina/localhost 目录中创建多个 .xml 文件,每个文件都可以指向单个 .war 文件。这几乎是我想要的 - 问题是 .war 文件必须存在于默认 webapps 文件夹之外,并且 Tomcat Client Deployer 总是(据我所知)将 .war 文件放入默认 webapps 文件夹中。 【参考方案2】:

为每个使用一个描述符文件。即 /conf/Catalina/localhost 中的多个描述符文件。每个都有不同的名称(app1.xml、app2.xml),因此它们部署在 /app1、/app2 等,但您引用相同的 .war。

app1.xml:

上下文路径="/app1" docBase="/path/to/MyWebApp.war" reloadable="false"

app2.xml:

上下文路径="/app2" docBase="/path/to/MyWebApp.war" reloadable="false"

【讨论】:

如果 docBase 在默认的 webapp 目录中,这将不起作用。我收到此错误:已指定主机 appBase 内的 docBase MyWebApp.war,将被忽略。

为啥我需要在 tomcat 应用程序上启用 CORS

】为啥我需要在tomcat应用程序上启用CORS【英文标题】:WhydoIneedtoenableCORSonthetomcatapplication为什么我需要在tomcat应用程序上启用CORS【发布时间】:2015-11-2317:52:19【问题描述】:我有一个在tomcat8服务器上运行的应用程序,在域上和... 查看详情

部署好supervisor,轻松管理web应用

参考技术A在web应用部署到线上后,需要保证应用一直处于运行状态,在遇到程序异常、报错等情况,导致web应用终止时,需要保证程序可以立刻重启,继续提供服务。因为最近系统经常GG,挂的有点莫名其妙,所以领导说需要一... 查看详情

eelipse关于web服务器tomcat的配置

开发过程中,我们在本地运行Web项目时,需要用到Web应用服务器,Eclipse搭载Tomcat可以很好的解决这一问题。Tomcat的配置步骤如下:开发过程中,我们在本地运行Web项目时,需要用到Web应用服务器,Eclipse搭载Tomcat可以很好的解决... 查看详情

如何在运行在 Tomcat 上的 Spring Web 应用程序中使用 Spring 的响应式 WebClient

】如何在运行在Tomcat上的SpringWeb应用程序中使用Spring的响应式WebClient【英文标题】:HowtouseSpring\'sreactiveWebClientinaSpringWebApplicationwhichrunsonTomcat【发布时间】:2019-09-1508:10:31【问题描述】:无法在Tomcat上运行的基于SpringBoot的Web应用... 查看详情

在具有 1 个 web.xml 文件的单个 tomcat 实例中运行 spring mvc web 应用程序和 jaxws soap web 服务

】在具有1个web.xml文件的单个tomcat实例中运行springmvcweb应用程序和jaxwssoapweb服务【英文标题】:runningspringmvcwebappandjaxwssoapwebserviceinsingletomcatinstancehaving1web.xmlfile【发布时间】:2021-10-1902:04:15【问题描述】:我正在做一个zoho到quickb... 查看详情

Tomcat:显示 Web 应用程序的维护页面

】Tomcat:显示Web应用程序的维护页面【英文标题】:Tomcat:Displaymaintenancepageforwebapp【发布时间】:2015-06-1710:34:57【问题描述】:我在一个Tomcat8上运行两个Web应用程序。当我为其中一个Web应用程序发布代码时,我会从Tomcatwebapps目... 查看详情

在 Web 浏览器中运行 WPF 浏览器应用程序

】在Web浏览器中运行WPF浏览器应用程序【英文标题】:RunningWPFbrowserapplicationinWebBrowser【发布时间】:2011-10-2608:53:29【问题描述】:我想在哪个浏览器中设置将运行我的WPF浏览器应用程序。可能吗?如果我点击调试按钮,它将在... 查看详情

1如何优化tomcat

...configureContext()统一解析这些内容:这个只能是在项目中不需要的配置不要放进去,有过期的配置要及时删除,减少tomcat的解析成本。这是一个处理静态文件的servlet,如果项目中不需要tomcat进行静态文件的处理,可以将其删掉。... 查看详情

一个 tomcat 实例中的多个 Web 应用程序从另一个应用程序的属性文件开始

】一个tomcat实例中的多个Web应用程序从另一个应用程序的属性文件开始【英文标题】:Multiplewebapplicationsinonetomcatinstancestartwithapropertiesfilefromanotherapplications【发布时间】:2020-09-0400:56:02【问题描述】:我们在一台服务器上的一个t... 查看详情

如何在没有完整安装 Tomcat 的情况下运行 Spring Web 应用程序?

...构建(在Eclipse下)成功并生成了目标.war文件。但是,我需要测试运行它,我暂时不想下载和安装Tomcat。我听说有一 查看详情

安卓系统运行机制

...一个平等的位置。用户可以随时切换每个应用程序,在不需要应用程序时,也需要用户来关闭应用程序。   但是Android操作系统的应用程序却不是采用这种方式。   Android中每次只有一个应用程 查看详情

Apache Tomcat 服务器关闭但 web 应用程序仍在运行

】ApacheTomcat服务器关闭但web应用程序仍在运行【英文标题】:ApacheTomcatServershutdownyetwebapplicationisstillrunning【发布时间】:2012-03-1915:39:08【问题描述】:我使用的是ApacheTomcat6.0.18,我在WindowsXP上运行我有一个web应用程序,我将它的... 查看详情

java示例代码_每当加载上下文(tomcat启动)时,在java web应用程序中自动运行servlet/操作

java示例代码_每当加载上下文(tomcat启动)时,在java web应用程序中自动运行servlet/操作 查看详情

在 Tomcat 中部署的 Spring Boot 提供 404 但可以独立运行

】在Tomcat中部署的SpringBoot提供404但可以独立运行【英文标题】:SpringBootDeployedinTomcatgives404butworksStand-alone【发布时间】:2015-03-2106:22:46【问题描述】:我已经用嵌入式Tomcat测试SpringBoot大约一个月了,以构建一个RESTAPI。一切正常... 查看详情

eclipseideforjavaeedevelopers新导入一个web工程,怎样部署运行

...解答……另外EclipseIDEforJavaEEDevelopers3.6版开发Web应用需不需要安装Tomcat插件,Lamboz插件,有人说得安装,有人说EclipseIDEforJavaEEDevelopers3.6版已经自带了。1.在myeclipse里面,window菜单最后一个preferences,左边点开myclispe,点servers下面找到t... 查看详情

初识tomcat之1——java体系理解

...言“一次编译到处使用”的优势,在介绍TomCat之前,首先需要对Java的技术体系有一定的了解。二、Java介绍Java与Python、PHP、C#等一样属应用级开发语言,不同于C等系统及开发语言,应用级开发语言在同一平台下所写的代码在其他... 查看详情

手写一个简易版tomcat

...我们的Web应用是什么关系? 从感性上来说,我们一般需要把Web应用打成WAR包部署到Tomcat中,在我们的Web应用中,我们要指明URL被哪个类的哪个方法所处理(不论是原始的Servlet开发,还是现在流行的SpringM 查看详情

如何在linux下使用tomcat部署web应用

...warfile)2,将tomcat(用winSCP当然你也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用puttomcat命令)考到ilunx对应的目录下3,然后将项目的war包放到tomcat的webapps目录下4,启动tomcat(命令:./startup.sh(linux下启动tomcat是.sh文件... 查看详情