JMS(Jboss Messaging)的一点使用心得(四)Spring扩展应用-可修改的JMS ConnectionFactory

在有些应用中,我们不需要在程序启动的时候就启动JMS服务;而且,我们每次访问的JMS服务器有可能都不一样,这个时候就需要一个可动态配置JMS ConnectionFactory 。
     <!--  **JMS**  -->
    
<!--  **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的用户名和密码
         if  (StringUtils.isNotEmpty(hostName))  {
            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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值