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

Ort*_*kni 5 java spring tomcat

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

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

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

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

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

Ort*_*kni 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>
Run Code Online (Sandbox Code Playgroud)

这会将spring.profiles.active属性设置dev,server为 运行的应用程序application-dev.war

感谢这个答案:/sf/answers/1865726691/

PS:使用autoDeploy=truein 时server.xml,配置文件会在 tomcat 重新启动时消失。

解决方案是添加<Context reloadable="true"><CATALINA_BASE>/conf/context.xml要注意,根据文档

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

而且使用并<Context reloadable="true">不能完全解决配置文件在某些​​重新启动后仍然消失的问题。

PS2:docBase元素中没有属性Context,看这个问题