<!-- **JNDI Template** -->
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" lazy-init="true">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">org.jnp.interfaces.NamingContextFactory</prop>
<prop key="java.naming.factory.url.pkgs">org.jboss.naming:org.jnp.interfaces</prop>
<prop key="java.naming.provider.url">localhost:1099</prop>
</props>
</property>
</bean>
<!-- **JMS Connection** --> <bean id="jmsConnectionFactory" lazy-init="true" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="proxyInterfaces" value="javax.jms.ConnectionFactory" />
<property name="lookupOnStartup" value="false" />
<property name="jndiTemplate" ref="jndiTemplate" />
<property name="jndiName" value="ConnectionFactory" />
</bean>
<!-- userCredentialsConnection. For JmsSecurity -->
<bean id="myConnectionFactory" lazy-init="true"
class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
<property name="targetConnectionFactory" ref="jmsConnectionFactory" />
</bean>
我們可以通過代碼來重新配置JMS服務器的IP和Security的用戶名和密碼
JndiTemplate jndiTemplate = (JndiTemplate) this.factory.getBean("jndiTemplate");
Properties props = jndiTemplate.getEnvironment();
props.setProperty("java.naming.provider.url", hostName + ":1099");
}
UserCredentialsConnectionFactoryAdapter jmsUserAdapter = (UserCredentialsConnectionFactoryAdapter)
this.factory.getBean("myConnectionFactory");
jmsUserAdapter.setUsername(jmsUserName);
jmsUserAdapter.setPassword(jmsPassword);