簡體   English   中英

Spring從JBoss上下文加載PropertySourcesPlaceholderConfigurer

[英]Spring loading PropertySourcesPlaceholderConfigurer from JBoss context

我有一個使用PropertySourcesPlaceholderConfigurer的spring 3.1應用程序加載設置,我想管理測試和生產環境,只需從本地文件屬性中指定的服務器上下文覆蓋設置加載設置。

下一個例子適用於Tomcat,我怎樣才能在JBoss AS 7.1中做同樣的事情?

在春天的背景下,我有:

<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文件中)

編輯 - 解決:

正如答案中所建議的那樣,如果我將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>

但我的目標是將配置文件從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>

如果有人知道如何將JBOSS配置中的參數從webapp中取出(如TOMCAT),我們非常感謝!

謝謝大家!

根據JBoss7文檔:

在AS7中,忽略文件context.xml。 大多數舊的context.xml配置已移至jboss-web.xml

有關詳細信息,請參見此處

在舊版本中,您可以像往常一樣將這些屬性添加到context.xml - JBoss使用Tomcat作為servlet容器。

使用jboss-web.xml文件。 此文件專門替換Tomcat中的context.xml。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM