gpt4 book ai didi

java - Spring 从 JBoss 上下文加载 PropertySourcesPlaceholderConfigurer

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:30:00 26 4
gpt4 key购买 nike

我有一个使用 PropertySourcesPlaceholderConfigurer 加载设置的 spring 3.1 应用程序,我想管理测试和生产环境,只需从服务器上下文加载设置,覆盖本地文件属性中指定的设置。

下一个例子在 Tomcat 上运行良好,我如何在 JBoss AS 7.1 上做同样的事情?

在 spring 上下文中,我有:

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="localOverride" value="false" />
<property name="locations">
<list>
<value>classpath:Application.properties</value>
<value>classpath:ApplicationTest.properties</value>
</list>
</property>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

在 ApplicationTest.properties(覆盖 Application.properties)中:

jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@XXXX:1521:xxxx
jdbc.username=myUsername
jdbc.password=myPassword

在 context.xml 中(在 Tomcat/conf 目录中):

<Context>
...
<Parameter name="jdbc.driverClassName" value="oracle.jdbc.OracleDriver" override="false"/>
<Parameter name="jdbc.url" value="jdbc:oracle:thin:@XXXX:1521:ProductionSID" override="false"/>
<Parameter name="jdbc.username" value="myProductionUsername" override="false"/>
<Parameter name="jdbc.password" value="myProductionPassword" override="false"/>
...
</Context>

这样,context.xml 中指定的所有参数都会覆盖 ApplicationTest.properties 中的参数。

有没有办法在 JBoss 中指定上下文参数? (即在 standalone.xml 文件中)

编辑 - 已解决:

如答案中所建议的,如果我将条目放入 webapp 中的 WEB-INF/jboss-web.xml 中,则可以正常工作:

<jboss-web>
...
<env-entry>
<env-entry-name>jdbc.username</env-entry-name>
<env-entry-value>myUsername</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
...
</jboss-web>

但我的目标是将配置文件放在 webapp 之外。我以这种方式解决了,我从 $SERVER/conf 目录加载配置文件:

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="false" />
<property name="localOverride" value="false" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:Application.properties</value>
<value>classpath:ApplicationTEST.properties</value>
<value>file:${catalina.home}\conf\ApplicationPRODUCTION.properties</value><!-- FOR TOMCAT -->
<value>file:${jboss.server.base.dir}\configuration\ApplicationPRODUCTION.properties</value><!-- FOR JBOSS-->
</list>
</property>
</bean>

如果有人知道如何将参数放入 Webapp(如 TOMCAT)之外的 JBOSS 配置中,我们将不胜感激!

谢谢大家!

最佳答案

根据 JBoss7 文档:

In AS7 the file context.xml is ignored. Most of the old context.xml configuration has been moved to jboss-web.xml.

参见 here了解更多详情。

在旧版本中,您可以像往常一样将这些属性添加到 context.xml - JBoss 使用 Tomcat 作为 servlet 容器。

关于java - Spring 从 JBoss 上下文加载 PropertySourcesPlaceholderConfigurer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15502383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com