java Spring 从 JBoss 上下文加载 PropertySourcesPlaceholderConfigurer
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15502383/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Spring loading PropertySourcesPlaceholderConfigurer from JBoss context
提问by fl4l
I have a spring 3.1 application loading settings using PropertySourcesPlaceholderConfigurer and I want to manage test and production environments simply loading settings from server context overriding settings specified in local file properties.
我有一个使用 PropertySourcesPlaceholderConfigurer 的 spring 3.1 应用程序加载设置,我想管理测试和生产环境,只需从本地文件属性中指定的服务器上下文覆盖设置加载设置。
Next example works fine with Tomcat, how can I do the same in JBoss AS 7.1?
下一个示例适用于 Tomcat,我如何在 JBoss AS 7.1 中执行相同的操作?
In spring context I have:
在春天的背景下,我有:
<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>
In ApplicationTest.properties (that overrides Application.properties):
在 ApplicationTest.properties(覆盖 Application.properties)中:
jdbc.driverClassName=oracle.jdbc.OracleDriver
jdbc.url=jdbc:oracle:thin:@XXXX:1521:xxxx
jdbc.username=myUsername
jdbc.password=myPassword
In context.xml (in Tomcat/conf directory):
在 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>
In this way all parameters specified in context.xml overrides parameters in ApplicationTest.properties.
这样,在 context.xml 中指定的所有参数都会覆盖 ApplicationTest.properties 中的参数。
Is there a way to specify context parameter in JBoss? (i.e. in standalone.xml file)
有没有办法在 JBoss 中指定上下文参数?(即在 standalone.xml 文件中)
EDIT - SOLVED:
编辑 - 已解决:
As suggested in the answers, if I put entries in WEB-INF/jboss-web.xml inside webapp that works:
正如答案中所建议的,如果我将条目放在 WEB-INF/jboss-web.xml 中的 webapp 中,则可以正常工作:
<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>
But my goal was to put the config file out of webapp. I solved in this way, I load the config file from $SERVER/conf directory:
但我的目标是将配置文件从 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>
If someone knows how to put Parameters in JBOSS config out of webapp (as TOMCAT) is well appreciated!
如果有人知道如何将 JBOSS 配置中的参数放在 webapp 之外(如 TOMCAT),我们将不胜感激!
Thanks All!
谢谢大家!
回答by omnomnom
According to the JBoss7 documentation:
根据 JBoss7 文档:
In AS7 the file context.xml is ignored. Most of the old context.xml configuration has been moved to jboss-web.xml.
在 AS7 中,文件 context.xml 被忽略。大多数旧的 context.xml 配置已移至jboss-web.xml。
See herefor more details.
请参阅此处了解更多详情。
In older versions you could add these properties to context.xml as usual - JBoss use Tomcat as a servlet container.
在旧版本中,您可以像往常一样将这些属性添加到 context.xml - JBoss 使用 Tomcat 作为 servlet 容器。
回答by Peter Bratton
Use a jboss-web.xmlfile. This file specifically replaces context.xml from Tomcat.
使用jboss-web.xml文件。该文件专门替换了 Tomcat 中的 context.xml。