我想在同一个 tomcat 服务器上并行运行我的 spring 应用程序两次。一次使用 production
配置文件,一次使用 dev
配置文件。
我还想为这两个配置文件构建一个 WAR。
我已经使用 @Profile
注释成功地将配置文件集成到我的应用程序中。我已经在我的 tomcat 服务器上成功部署了这两个 WAR 文件。
我需要的是在这两个应用程序中的每一个上激活不同配置文件的方法,限制条件是这两个应用程序使用同一 WAR 文件的副本,并且这两个应用程序应该并行运行。
所以 WebApplicationInitializer
和 web.xml
似乎不是一个选项。
最佳答案
备案:
激活dev
spring profile在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
属性(property)dev,server
对于 application-dev.war
运行的应用程序.
感谢这个答案:https://stackoverflow.com/a/26653238/1807667
附注:与autoDeploy=true
在server.xml
, configuration files disappear在 tomcat 重启时。
解决方案是添加<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:没有docBase
Context
中的属性元素,参见 this question .
关于java - 如何在 tomcat 服务器上运行两个具有不同 spring 配置文件的 WAR 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353040/