domingo, 20 de mayo de 2012

CREACIÓN Y MANEJO DE UN MDB


En esta oportunidad tratare de explicar un poco el manejo de un MDB (Message Driven Bean), apoyándonos en la herramienta: “Oracle Enterprise Pack for Eclipse” que en si es un ECLIPSE.
Antes que nada un poco de conceptos:

ENTERPRISE JAVABEANS (EJB):

Enterprise JavaBeans son componentes de J2EE que implementan la tecnología Enterprise JavaBeans (EJB). Estos beans corren dentro de un EJB container, en un runtime environment dentro del Servidor de Aplicaciones. Proporcionan un modelo de componentes que simplifica el desarrollo de aplicaciones del lado del servidor, proporcionando apoyo automático a los servicios como las transacciones, seguridad y conectividad de base de datos. Estos servicios son proporcionados por el contenedor EJB que forma parte del servidor de aplicaciones. El contenedor maneja el ciclo de vida completo del Enterprise JavaBean (EJB). EJB 2.0 especifica tres tipos de Beans: Session, Entity, Message Bean.

MESSAGE DRIVEN BEAN (MDB):


Un MDB (Bean controlado por mensajes) es un consumidor de mensajes asíncrono y es invocado por el contenedor EJB al momento de la llegada de un mensaje JMS en una cola. Un cliente no puede acceder al Bean directamente, sino que lo hace mediante el envío de mensajes al destino de JMS (cola o tema), este MDB se activa mediante la implementación de la clase MessageListener. Los mensajes de beans no tiene estado conversacional y son anónimos.

Una plantilla base de un MDB debería lucir de esta manera:

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.annotation.Resource;
import javax.ejb.EJBException;

/**
 * JavamanMDB
 * @author cguerra
 */
@MessageDriven( activationConfig = { @ActivationConfigProperty(
propertyName  = "destinationType",
propertyValue = "javax.jms.Queue") },
mappedName    = "jms/MQ_01",
messageListenerInterface = MessageListener.class )
public class JavamanMDB implements MessageListener, MessageDrivenBean{

   private static final long serialVersionUID = 6500707485732319445L;
  
   @Resource
   private MessageDrivenContext mdc = null;

   //Constructor ...
   public JavamanMDB(){
   }

   /**
       * setMessageDrivenContext
       * @param mdcParam
       */
    @Override
    public void setMessageDrivenContext( MessageDrivenContext mdcParam ){
           this.mdc = mdcParam;
    }

   /**
    * ejbRemove
    */
    @Override
    public void ejbRemove() throws EJBException {    
    }
      
   /**
    * onMessage
    * @param messageParam
    */
    public void onMessage( Message messageParam ){         
    }

  }

El objetivo del TUTORIAL es justamente intentar crear lo mostrado en la grafica de arquitectura:

1. Un app Cliente (Puede ser un JSP, un Servlet, etc). En nuestro caso una clase Main que lance un Mensaje.
2. La configuración en un Servidor de aplicaciones de una COLA JMS.
3. La creación de un EJB de tipo MDB para que esta al escucha, de los mensajes ingresados en una COLA.
4. La interpretación del mensaje.
5. Procesamiento y redistribución (esta parte será explicada solamente).


Para el desarrollo completo de las 5 partes de tutorial, es preferible la descarga del documento detallado. La descarga la pueden hacer: AQUI.

Para descargar las fuentes de Dummy lo pueden hacer de aqui: AQUI.


No hay comentarios: