3

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.

Next example works fine with Tomcat, how can I do the same in 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):

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>
    ...
    <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.

Is there a way to specify context parameter in JBoss? (i.e. in standalone.xml file)

EDIT - SOLVED:

As suggested in the answers, if I put entries in WEB-INF/jboss-web.xml inside webapp that works:

<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:

<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!

Thanks All!

4

2 回答 2

2

根据 JBoss7 文档:

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

有关更多详细信息,请参见此处

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

于 2013-03-19T16:10:37.677 回答
0

使用jboss-web.xml文件。该文件专门替换了 Tomcat 中的 context.xml。

于 2013-03-19T16:10:20.173 回答