|
|
(No se muestran 8 ediciones intermedias de 2 usuarios) |
Línea 1: |
Línea 1: |
− | [[Spring Framework]] provee soporte para crear consumidores [[JMS]] usando [[POJO]]s. De esta manera, Spring brinda los llamados [[Message Driven POJO]] (MDP), que resulta ser una alternativa liviana a los [[Message Driven Bean]] que forman parte de la especificación [[Java EE]]. Con los MDP podemos obtener un comportamiento similar a los MDB, pero sin la necesidad de contar con un [[Servidor de Aplicaciones]].
| + | Kudos to you! I hadn't touhght of that! |
− | | |
− | == Creación del POJO ==
| |
− | La clase que consumirá los mensajes que lleguen al destino [[JMS]] será un bean cualquier declarado en Spring, el cual deberá implementar la interfaz ''javax.jms.MessageListener''. Por lo tanto, un MDB '''es''' un MDP; es decir, un MDP implementa la misma interfaz que implementan los MDB. Por lo tanto, podemos usar a un MDB existente como si fuera un MDP.
| |
− | | |
− | Un ejemplo de este bean podría ser:
| |
− | | |
− | <code java>
| |
− | package com.dosideas.mdp;
| |
− | | |
− | import javax.jms.JMSException;
| |
− | import javax.jms.Message;
| |
− | import javax.jms.MessageListener;
| |
− | import javax.jms.TextMessage;
| |
− | | |
− | public class HolaMundoMdp implements MessageListener {
| |
− | | |
− | public void onMessage(Message message) {
| |
− | TextMessage textMessage = (TextMessage) message;
| |
− | //procesar mensaje...
| |
− | }
| |
− | }
| |
− | </code>
| |
− | | |
− | == Configuración de Spring ==
| |
− | Lo siguiente es realizar la configuración correspondiente en los archivos de configuración de Spring. La clase clave de esta configuración es ''org.springframework.jms.listener.DefaultMessageListenerContainer'', el cual declara al bean que se encargará de conectarse al destino [[JMS]] para consumir los mensajes y delegar su procesamiento a nuestro MDP. Esta clase permite configurar la cantidad de consumidores concurrentes, transaccionalidad, selectores y mucho más.
| |
− | | |
− | <code xml>
| |
− | <?xml version="1.0" encoding="UTF-8"?>
| |
− | <beans xmlns="http://www.springframework.org/schema/beans"
| |
− | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
| |
− | xsi:schemaLocation="http://www.springframework.org/schema/beans
| |
− | http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
| |
− | | |
− | <bean id="mdp.HolaMundoMdbp" class="com.dosideas.mdp.HolaMundoMdp"/>
| |
− | | |
− | <bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate" />
| |
− | | |
− | <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
| |
− | <property name="jndiTemplate">
| |
− | <ref bean="jndiTemplate" />
| |
− | </property>
| |
− | <property name="jndiName">
| |
− | <value>jms/ConnectionFactory</value>
| |
− | </property>
| |
− | </bean>
| |
− | | |
− | <bean id="queue" class="org.springframework.jndi.JndiObjectFactoryBean">
| |
− | <property name="jndiTemplate">
| |
− | <ref bean="jndiTemplate" />
| |
− | </property>
| |
− | <property name="jndiName">
| |
− | <value>jms/EjemploQueue</value>
| |
− | </property>
| |
− | </bean>
| |
− | | |
− | <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
| |
− | <property name="concurrentConsumers" value="5" />
| |
− | <property name="connectionFactory" ref="connectionFactory" />
| |
− | <property name="destination" ref="queue" />
| |
− | <property name="messageListener" ref="mdp.HolaMundoMdbp" />
| |
− | </bean>
| |
− | </beans>
| |
− | </code>
| |
− | | |
− | == Ver también ==
| |
− | * [[JMS]]
| |
− | * [[Spring Framework]]
| |
− | * [http://java-x.blogspot.com/2006/12/implementing-jms-with-spring-message.html Message Driven POJO]
| |
− | * [http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/jms/listener/DefaultMessageListenerContainer.html Javadoc de DefaultMessageListenerContainer]
| |
− | | |
− | [[Category:Spring Framework]]
| |
− | [[Category:JMS]]
| |