JMS y Spring Framework

Una aplicación Spring Framework puede utilizar la clase JMSTemplate para enviar mensajes JMS o recibir mensajes JMS síncronos.

La plantilla JMS (JMSTemplate) puede localizar destinos JMS a partir del nombre JNDI (Java™ Naming and Directory Interface) que configure en una referencia de recurso de aplicación.

De manera alternativa, para Spring Framework Versión 2.5 y posterior, la plantilla JMS puede localizar destinos JMS mediante la resolución dinámica, que busca el nombre administrativo del destino que se ha configurado en WebSphere Application Server

Utilice un JndiObjectFactoryBean de Spring como proxy para una fábrica de conexiones (ConnectionFactory) a fin de asegurarse de que los recursos JMS se gestionan correctamente. Por ejemplo:
<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>
El ejemplo siguiente muestra la configuración de una referencia de recurso para una fábrica de conexiones. Durante el despliegue de aplicaciones, esta referencia de recurso se correlaciona con una fábrica de conexiones configurada gestionada que se almacena en el espacio de nombres JNDI del servidor de aplicaciones. La fábrica de conexiones es necesaria para llevar a cabo la mensajería y se debe inyectar en el objeto JMSTemplate de Spring.
<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>
Cuando ya se ha definido un nombre JNDI para la fábrica de conexiones en la aplicación, ese nombre JNDI se puede buscar e inyectar en la plantilla JMS. Por ejemplo:
<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>

<!-- Solucionador dinámico --> 
<bean id="jmsDestResolver" 
  class=" org.springframework.jms.support.destination.DynamicDestinationResolver"/>

<!-- Solucionador JNDI -->  
<bean id="jmsDestResolver" 
  class=" org.springframework.jms.support.destination.JndiDestinationResolver"/>

En el tiempo de ejecución, el objeto JMSTemplate puede localizar un destino basándose en el nombre JNDI que se ha configurado en una referencia de recurso de aplicación. Alternativamente, el objeto JMSTemplate puede localizar un destino utilizando la resolución dinámica, basándose en el nombre administrativo del destino configurado en WebSphere Application Server.

El ejemplo siguiente muestra cómo utilizar la resolución JNDI para localizar la cola JMS myQueue que está enlazada a una referencia JNDI de jms/myQueue:
jmsTemplate.send("java:comp/env/jms/myQueue", messageCreator);
El ejemplo siguiente muestra cómo utilizar la resolución dinámica para localizar la cola JMS myQueue que está enlazada a una referencia JNDI de jms/myQueue:
jmsTemplate.send("myQueue", messageCreator);

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_jms
File name: cspr_data_access_jms.html