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

我想在同一个tomcat服务器上并行运行我的spring应用程序两次.一次使用生产配置文件,一次使用开发配置文件.

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

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

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

因此,WebApplicationInitializer和web.xml似乎不是一个选项.

最佳答案
作为记录:

在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.:在server.xml中使用autoDeploy = true时,tomcat上的configuration files disappear重新启动.

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

This feature is very useful during application development, but it
requires significant runtime overhead and is not recommended for use
on deployed production applications.

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

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

转载注明原文:如何在tomcat服务器上运行具有不同弹簧配置文件的两个WAR文件? - 代码日志