java - WebSphere 和 PropertyPlaceholderConfigurer

标签 java spring websphere

我是属性(使用PropertyPlaceholderConfigurer)的大用户,以使我的应用程序尽可能“动态”。几乎所有的常量都是这样定义的。不管怎样,我目前正在定义一个默认 WAR 附带的 default.properties

在其他环境(验收/生产)中,我需要覆盖配置。我这样做如下:

<bean id="propertyManager"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:com/company/default.properties</value>
                <value>file:${COMPANY_PROPERTIES_LOCATION}\kbo-select-settings.properties</value>
            </list>
        </property>
    </bean>

通过这意味着我可以为每个环境使用可升级的构建。

但是,我确实不喜欢这样的事实:我无法从 WebSphere 内部更改我的任何属性。相反,我必须访问每台服务器(我们有 8 个集群)并相应地更改属性。如果我可以从 WebSphere 内部更改这些内容并随后执行重新启动,那么用户友好性会更高...

有人知道我如何做这样一个可推广的构建吗?我已经为 datasources/java mail/etc 定义了 JNDI 配置。

谢谢!

最佳答案

我们通过在每个环境(local、dev、int、tst ...)的属性文件上使用扩展来解决这个问题,并且每个文件都包含这些环境的特定值。您需要的唯一添加是服务器上的 VM 参数来设置 -Druntime.env=X。

您在配置文件中的查找将如下所示

<bean id="propertyManager"
 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
       <list>
          <value>classpath:com/company/default.properties.${runtime.env}</value>
          <value>file:${COMPANY_PROPERTIES_LOCATION}\kbo-select-settings.properties</value>
        </list>
    </property>
 </bean>

当然,这仅在您拥有相当静态的环境时才有效,因为它仍然不适合在运行时更改它,但它确实使应用程序的升级变得非常简单。如果您希望能够在不重新部署应用程序的情况下更改这些值,则必须将它们存储在应用程序外部,您似乎已经在为kbo-select-settings.properties

关于java - WebSphere 和 PropertyPlaceholderConfigurer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1260927/

相关文章:

java - 具有内部对象实例化的组合最佳实践

java - 蓝色混合 : Java Rest API starter app

Spring 事件和范围请求

java - 如何将用户定义的用户名从 IBM Websphere Application 服务器传递到 AS400 MQ 服务器进行身份验证?

jakarta-ee - 注释验证异常 (com.ibm.wsspi.amm.validate.ValidationException)

java - 无法从文档读取架构文件

java - 无法从 Android 中的 Web 服务解析

java - STS,运行任何指南项目

eclipse - Eclipse 中的空白配置文件名称,Websphere 设置

java - 无法使用 PDPageContentStream 绘制多个半圆