Ing. Pablo Almeida Haro Msc.

MESSAGE DRIVEN BEANS

 

CREACION DEL JMS (Java Message Service)

*Click en services/click derecho en Glassfish server/view admin console

 

*Click en recursos JMS/fábricas de conexión/nuevo. Ingresar Nombre del conjunto, tipo de recurso y aceptar.

 

*Click en recursos de destino/nuevo. Ingresar nombre Jndi, nombre del destino físico, tipo de recurso y aceptar

 

CREACION DEL PROYECTO

 

*Click en file new Project/Java ee/Enterprise application

 

*Ingresar el nombre del proyecto y ubicación

*Dejar por defecto las siguientes opciones

 

*Se creará el árbol con sigue a continuación:

 

CREACION DEL MESSAGE DRIVEN BEAN

 

*Click derecho sobre el proyecto ejb/new/message driven bean. Ingresar el nombre del Ejb, paquete y servidor destino

 

 

*El código quedaría como sigue a continuación:

 

package pkg_ejb_message;

 

import javax.ejb.ActivationConfigProperty;

import javax.ejb.MessageDriven;

 

import javax.jms.MapMessage;

import javax.jms.Message;

import javax.jms.MessageListener;

 

@MessageDriven(mappedName = "destino_jms", activationConfig = {

    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),

    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")

})

public class ejb_MessageBean implements MessageListener {

   

    public ejb_MessageBean() {

 

    }

   

    @Override

    public void onMessage(Message message)

    {  try

       {

           System.out.println("hello from message driven bean");

           MapMessage msg=(MapMessage ) message;

           System.out.print("Cédula:"+msg.getString("cedula"));

           System.out.print("Nombre:"+msg.getString("nombre"));

           System.out.print("Dirección:"+msg.getString("direccion"));

          

       }

       catch (Exception ex)

               {

                   ex.printStackTrace();

               }

      

               }

      

    }

CREACION DEL CLIENTE TIPO SERVLET

*Click sobre el proyecto web y seleccionar file/new/new file/web/servlet

 

 

*Ingresar nombre de la clase y paquete

*Dejar por defecto los datos que siguen a continuación:

 

*El código quedaría como sigue a continuación:

package pkg_cliente;

 

import java.io.IOException;

import java.io.PrintWriter;

import javax.annotation.Resource;

import javax.jms.Connection;

import javax.jms.MapMessage;

import javax.jms.MessageProducer;

import javax.jms.Session;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

@WebServlet(name = "servlet_cliente", urlPatterns = {"/servlet_cliente"})

public class servlet_cliente extends HttpServlet {

    @Resource(mappedName="conexion_jms")

    javax.jms.QueueConnectionFactory queueConnection;

    @Resource(mappedName="destino_jms")

    javax.jms.Queue queue;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        try {

        Connection  connection =queueConnection.createConnection();

        Session session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

        MessageProducer producer=session.createProducer(queue);

        MapMessage message=session.createMapMessage();

        message.setString("cedula","12233322");

        message.setString("nombre","Juan");

        message.setString("direccion","10 agosto");

        producer.send(message);

        producer.close();

        session.close();

        connection.close();        }

        catch(Exception ex){           

        ex.printStackTrace();

        }

    }

    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        processRequest(request, response);

    }

 

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        processRequest(request, response);

    }

 

    @Override

    public String getServletInfo() {

        return "Short description";

    }// </editor-fold>

}

 

*Hacer un click derecho sobre el proyecto entreprise/deploy

CORRER LA APLICACIÓN

 

*Click derecho sobre el archivo cliente (serlvet) y run file