根据配置文件在spring应用程序上下文中加载不同的jndi.properties文件

时间:2012-05-29 05:30:49

标签: spring jms jndi applicationcontext

我有一个jms连接设置,它在我的类路径上的jndi.properties文件中定义,我在本地开发环境中用它连接到ActiveMQ。我想将此文件重命名为“activemq.jndi.properties”,因为我计划为WebsphereMQ设置另一个jms连接设置(比如webshperemq.jndi.properties)。但是到目前为止,我在applicationContext.xml中告诉spring以查看activemq.jndi.properties并没有成功。

以下是我的applicationContext.xml的片段,适用于jndi.properties

<!-- Define how to connect to the Message Queueing system -->
<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName"    value="${jms.connectionFactory}" />
    <property name="resourceRef" value="true" />  
</bean>

<bean id="defaultDestination" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName"    value="${jms.topic}" />
    <property name="resourceRef" value="true" />
</bean>

<!-- Define a connection template that links to the factory -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory" />
    <property name="defaultDestination" ref="defaultDestination" />
    <property name="receiveTimeout" value="6000" />
</bean>

$ {jm​​s.connectionFactory}和$ {jm​​s.topic}都是从maven过滤掉的。关于需要在applicationContext.xml中更改哪些内容以使其从activemq.jndi.properties加载的任何输入将非常感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,我想你应该配置maven资源,所以根据配置文件使用另一个配置文件而不是更改Spring配置文件中的任何内容。

例如:

<profiles>
    <profile>
        <id>local</id>
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>jndi.properties</exclude>
                    </excludes>
                </resource>
            </resources>
        </build>
    </profile>
    <profile>
        <id>webshpere</id>
        <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <filtering>true</filtering>
                    <includes>
                        <include>webshperemq.jndi.properties</exclude>
                    </excludes>
                </resource>
            </resources>
        </build>
    </profile>
</profiles>