我想在同一个tomcat服务器上并行运行我的spring应用程序两次。一次使用production
个人资料,一次使用dev
个人资料。
我还想为这两个配置文件构建一个WAR。
我已使用@Profile
注释成功地在我的应用程序中集成了配置文件。我已经在我的tomcat服务器上成功部署了两个WAR文件。
我需要的是在这两个应用程序中激活不同配置文件的意思,其中约束是这两个应用程序使用相同WAR文件的副本,并且两个应用程序应并行运行。
所以WebApplicationInitializer
和web.xml
似乎不是一种选择。
答案 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。