有没有办法在Websphere中传递应用程序特定的属性?

时间:2019-10-30 13:08:10

标签: spring-boot jvm arguments websphere

我们有一个Websphere应用程序服务器,其中部署了多个应用程序。所有应用程序都使用相同的属性(键),但具有不同的值。例如 : spring.profiles.active =在一个应用程序中测试,spring.profiles.active = UAT在其他应用程序中。 是否可以在Websphere启动期间将这些不同的值传递给应用程序?

如果我们在“通用JVM参数”文本框中的JVM选项中设置这些值,那么对于我们不需要的所有应用程序,这些值都将变为相同。

在Websphere的应用程序级别设置这些属性,以便在启动应用程序时- 对于应用程序1-spring.profiles.active = test 对于应用程序2-spring.profiles.active = UAT

1 个答案:

答案 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>