Spring boot 有没有办法在Websphere中传递特定于应用程序的属性?
我们有一个websphereapplicationserver,其中部署了多个应用程序。所有应用程序都使用一个公共属性(键),但具有不同的值。例如: spring.profiles.active=一个应用程序中的测试,spring.profiles.active=其他应用程序中的UAT。 在Websphere中启动时是否可以将这些不同的值传递给应用程序 如果我们在通用JVM参数文本框中的JVM选项中设置这些值,那么对于我们不想要的所有应用程序,这些值都将变得相同 在websphere中的应用程序级别设置这些属性,以便在应用程序启动时- 对于应用程序1-spring.profiles.active=测试 对于应用程序2-spring.profiles.active=UAT表示可以在每个web应用程序的WebApplicationInitializer中设置spring.profiles.active属性。然后,每个应用程序都可以从系统属性中读取自己的特定命名属性。或者,如果使用Liberty(问题没有在传统的WebSphere和Liberty之间指定),那么您可以使用Micropofile Config定义一个公共名称的属性,该名称通过appProperties在每个应用程序中定义不同,例如,如中所示。但是您仍然需要WebApplicationInitializer来启动 例如,如下所示:Spring boot 有没有办法在Websphere中传递特定于应用程序的属性?,spring-boot,jvm,arguments,websphere,Spring Boot,Jvm,Arguments,Websphere,我们有一个websphereapplicationserver,其中部署了多个应用程序。所有应用程序都使用一个公共属性(键),但具有不同的值。例如: spring.profiles.active=一个应用程序中的测试,spring.profiles.active=其他应用程序中的UAT。 在Websphere中启动时是否可以将这些不同的值传递给应用程序 如果我们在通用JVM参数文本框中的JVM选项中设置这些值,那么对于我们不想要的所有应用程序,这些值都将变得相同 在websphere中的应用程序
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>
mpConfig-1.3
.. 其他特征
您使用的是哪个Websphere版本如果它们是Java系统属性(通过system.getProperty获得),那么答案是“否”-系统属性对于整个JVM是通用的。如果有另一种机制来设置它们(如属性文件),那么答案应该是“是”,但取决于该机制是什么。