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

标签 java spring tomcat

我想在同一个 tomcat 服务器上并行运行我的 spring 应用程序两次。一次使用 production 配置文件,一次使用 dev 配置文件。

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

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

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

所以 WebApplicationInitializerweb.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=trueserver.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/

相关文章:

java - Apache Tomcat 8 spring 加载时间编织不适用于 ContextLoaderListener 加载的 bean

java - IBM MQSeries 与 Tomcat 的连接池

java - 搜索字符串中的数据 - Java

java - Spring Web MVC Post请求多个对象

java - 将 includeAll 与类路径* : 一起使用时,变更集文件的 Liquibase 执行顺序

java - Spring Integration - 公开重载方法的消息传递网关

spring - Kafka Consumer 和 Spark-Kafka-Consumer 的区别

tomcat - 是否可以在 facelet 页面中包含远程网页?

java - 这段示例代码中哪里发生了回溯?

java - 获取 JTable 中的 topX 元素