我们有一个Websphere应用程序服务器,其中部署了多个应用程序。所有应用程序都使用相同的属性(键),但具有不同的值。例如 : spring.profiles.active =在一个应用程序中测试,spring.profiles.active = UAT在其他应用程序中。 是否可以在Websphere启动期间将这些不同的值传递给应用程序?
如果我们在“通用JVM参数”文本框中的JVM选项中设置这些值,那么对于我们不需要的所有应用程序,这些值都将变为相同。
在Websphere的应用程序级别设置这些属性,以便在启动应用程序时- 对于应用程序1-spring.profiles.active = test 对于应用程序2-spring.profiles.active = UAT
答案 0 :(得分:2)
This document表示您可以在每个Web应用程序的WebApplicationInitializer中设置spring.profiles.active属性。然后,每个应用程序可以从系统属性中读取其自己的专门命名的属性。或者,如果使用Liberty(在传统的WebSphere与Liberty之间未指定问题),则可以使用MicroProfile Config定义一个属性,该属性的通用名称通过appProperty对于每个应用程序都有不同的定义,例如,{{3}中所示}。但是您仍然需要WebApplicationInitializer来this knowledge center article。
示例如下:
Config config = ConfigProvider.getConfig();
servletContext.setInitParameter(
"spring.profiles.active",
config.getValue("ProfilesActive", String.class));
server.xml:
<server>
<featureManager>
<feature>mpConfig-1.3</feature>
.. other features
</featureManager>
<application location="app1.war">
<appProperties>
<property name="ProfilesActive" value="test"/>
</appProperties>
</application>
<application location="app2.war">
<appProperties>
<property name="ProfilesActive" value="UAT"/>
</appProperties>
</application>
</server>