【问题标题】:How to run two WAR files with different spring profiles on a tomcat server?如何在 tomcat 服务器上运行两个具有不同 spring 配置文件的 WAR 文件?
【发布时间】:2016-04-01 09:45:23
【问题描述】:

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

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

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

我需要的是在这两个应用程序中的每一个上激活不同配置文件的方法,约束是这两个应用程序使用同一个 WAR 文件的副本并且这两个应用程序应该并行运行。

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

【问题讨论】:

标签: java spring tomcat


【解决方案1】:

记录在案:

application-dev.war 中的应用程序上激活dev 弹簧配置文件

创建文件<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 重新启动。

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

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

此外,使用&lt;Context reloadable="true"&gt; 并不能完全解决配置文件在重新启动后仍然消失的问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2021-02-05
    • 1970-01-01
    • 2021-07-13
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多