JMS et Spring Framework
Une application Spring Framework peut utiliser la classe JMSTemplate pour envoyer des messages JMS ou recevoir des messages JMS synchrones.
La classe JMSTemplate peut localiser des destinations JMS à partir d'un nom JNDI (Java™ Naming and Directory Interface) que vous configurez dans une référence de ressource d'application.
Alternativement, pour Spring Framework Version 2.5 et versions suivantes, la classe JMSTemplate peut localiser les destinations JMS par résolution dynamique, c'est-à-dire en recherchant leur nom administratif configuré dans WebSphere Application Server.
<bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jms/myCF"/>
<property name="lookupOnStartup" value="false"/>
<property name="cache" value="true"/>
<property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
</bean>
<resource-ref>
<res-ref-name>jms/myCF</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<jee:jndi-lookup id="jmsConnectionFactory" jndi-name=" jms/myCF "/>
<bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory">
<ref bean="jmsConnectionFactory"/>
</property>
<property name="destinationResolver">
<ref bean="jmsDestResolver"/>
</property>
...
</bean>
<!-- A dynamic resolver -->
<bean id="jmsDestResolver"
class=" org.springframework.jms.support.destination.DynamicDestinationResolver"/>
<!-- A JNDI resolver -->
<bean id="jmsDestResolver"
class=" org.springframework.jms.support.destination.JndiDestinationResolver"/>
Pendant la phase d'exécution, l'objet JMSTemplate peut rechercher une destination sur la base du nom JNDI qui a été configuré dans une référence de ressource d'application. L'objet JMSTemplate peut également rechercher une destination en utilisant la résolution dynamique en fonction du nom d'administration de la destination configurée dans WebSphere Application Server.
jmsTemplate.send("java:comp/env/jms/myQueue", messageCreator);
jmsTemplate.send("myQueue", messageCreator);