如何在tomcat服务器上运行具有不同弹簧配置文件的两个WAR文件?

时间:2016-04-01 09:45:23

标签: java spring tomcat

我想在同一个tomcat服务器上并行运行我的spring应用程序两次。一次使用production个人资料,一次使用dev个人资料。

我还想为这两个配置文件构建一个WAR。

我已使用@Profile注释成功地在我的应用程序中集成了配置文件。我已经在我的tomcat服务器上成功部署了两个WAR文件。

我需要的是在这两个应用程序中激活不同配置文件的意思,其中约束是这两个应用程序使用相同WAR文件的副本,并且两个应用程序应并行运行。

所以WebApplicationInitializerweb.xml似乎不是一种选择。

1 个答案:

答案 0 :(得分:4)

记录:

dev

中激活应用程序上的application-dev.war春季个人资料

创建文件<CATALINA_BASE>/conf/Catalina/localhost/application-dev.xml

具有以下内容:

<Context>
  <Environment name="spring.profiles.active" value="dev,server" type="java.lang.String" override="false" />
</Context>

这为spring.profiles.active运行的应用程序的dev,server属性设置为application-dev.war

感谢您的回答:https://stackoverflow.com/a/26653238/1807667

P.S。: autoDeploy=true中的server.xml,tomcat上的configuration files disappear重启。

解决方案是在<Context reloadable="true">中添加<CATALINA_BASE>/conf/context.xml,但要注意根据documentation

  

此功能在应用程序开发期间非常有用,但它   需要大量的运行时开销,不建议使用   部署的生产应用程序。

而且使用<Context reloadable="true">并没有完全解决配置文件在某些​​重启时仍然消失的问题。

P.S.2: docBase元素中没有Context属性,请参阅this question