ontroller (IOC)设计模式里的设置方式注入原则(setter injection principle),用JMS对象实例类组配的。让我们详细查看这些组件,并为每一个JMS组件演示一段XML配置代码。
JNDI上下文是取得JMS资源的起始位置,因此首先我们要配置JNDI模板。清单2显示了名为jndiTemplate的Spring bean,其中列有JNDI初始上下文所必需的常用参数。
清单2. JNDI上下文模板
<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
org.jnp.interfaces.NamingContextFactory
</prop>
<prop key="java.naming.provider.url">
localhost
</prop>
<prop key="java.naming.factory.url.pkgs">
org.jnp.interfaces:org.jboss.naming
</prop>
</props>
</property>
</bean>
接着,我们配置队列连接工厂。清单3显示了队列连接工厂的配置。
清单3. JMS队列连接工厂配置
<bean id="jmsQueueConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate"/>
</property>
<property name="jndiName">
<value>UIL2ConnectionFactory</value>
</property>
</bean>
我们定义2个JMS目标来发送和接收消息。详情见清单4和5。
清单4. 发送队列配置
<bean id="sendDestination"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate"/>
</property>
<property name="jndiName">
<value>queue/CreditRequestSendQueue</value>
</property>
</bean>
使用Spring JMS轻松实现异步消息传递(6)
时间:2011-01-15 Srini Penchikala
清单5. 接收队列配置
<bean id="receiveDestination"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiTemplate">
<ref bean="jndiTemplate"/>
</property>
<property name="jndiName">
<value>queue/CreditReqeustReceiveQueue</value>
</property>
</bean>
然后我们再来配置JmsTemplate组件。在例程中我们使用JmsTemplate102。同时使用defaultDestination属性来指定JMS目标。
清单6. JMS模板配置
<bean id="jmsTemplate"
class="org.springframework.jms.core.JmsTemplate102">
<property name="connectionFactory">
<ref bean="jmsQueueConnectionFactory"/>
</property>
<property name="defaultDestination">
<ref bean="destination"/>
</property>
<property name="receiveTimeout">
<value>30000</value>
</property>
</bean>
最后我们配置发送者和接收者组件。清单7和8分别是Sender 和 Receiver对象的配置。
清单7. JMS Sender配置
<bean id="jmsSender" class="springexample.client.JMSSender">
<property name="jmsTemplate">
<ref bean="jmsTemplate&quo
|