繁体   English   中英

多个WAR文件的同一tomcat单例

[英]same tomcat singleton for multiple WAR files

我在雄猫中部署了多个WAR文件,其中包含同一应用程序的不同实例。 每个WAR文件都包含一个充当Singleton的类,但是此Singleton正在为我正在部署的每个WAR获取相同的值...事件如果我需要为每个WAR提供不同的值(DB参数,端口等),则读到Singleton依赖于同一个JVM中包含的ClassLoader相同,所以这种行为是正常的,但是我需要获得一个与我部署的每个WAR文件独立的singleton实例。

Tomcat服务器是否有任何配置可确保每个WAR实例具有不同的Singleton实例?

Tomcat中的每个webapp实例彼此独立,因此,如果您部署了多个webapp,则它们具有singleton类的不同实例。 当然,如果不另行通知,它们的配置都相同。

如果要在Tomcat的单个实例中运行同一 Web应用程序的多个实例,则只需创建多个上下文XML文件即可。 您甚至不必复制war文件。

$TOMCAT_HOME$/conf/Catalina/localhost ,创建多个XML文件,例如

foo.xml

<Context docBase="C:/path/to/MyWepApp.war">
  <Parameter name="greeting" value="Hello from FOO"/>
</Context>

bar.xml

<Context docBase="C:/path/to/MyWepApp.war">
  <Parameter name="greeting" value="Hello from BAR"/>
</Context>

如果您的Web应用程序代码调用ServletContext.getInitParameter("greeting")以获取该配置值,则它现在可以在每个部署的实例中显示不同的问候。

您现在可以使用http://localhost:8080/foohttp://localhost:8080/bar来访问它们。

当您更新war文件时,它们都将自动重新部署,而不必重新启动Tomcat。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM