Implementación de la técnica de Message Queuing en Netbeans a través de Enterprise Java Beans

Una cola de mensajes permite que uno o más procesos escriban un mensaje para que otros procesos lo lean. Una cola de mensajes se implementa como una lista enlazada de mensajes y se almacena dentro del Kernel. Cada cola de mensajes se identifica mediante un identificador de cola de mensajes. El Kernel realiza un seguimiento de todas las colas de mensajes creadas en un sistema.

Los pasos del procedimiento para implementar la técnica de Message Queuing en Netbeans a través de Enterprise Java Beans se enumeran en orden secuencial. Simplemente siga estos pasos para implementar un bean controlado por mensajes en Netbeans como se indica a continuación:

  1. Abra Netbeans y seleccione Java EE -> Aplicación empresarial
  2. Ingrese el nombre del proyecto en el cuadro de texto correspondiente
  3. Seleccionar servidor Glashfish
  4. Haga clic en Finalizar.
  5. Cree un bean controlado por mensajes en el componente EJB.
  6. Haga clic con el botón derecho en EJB y seleccione la opción Beans controlados por mensajes e ingrese el nombre EJB y el nombre del paquete y haga clic en Add-in project Destination y cree un recurso de destino.
  7. Ingrese Nombre y seleccione Cola y haga clic en Aceptar y siguiente.
  8. Ahora cree un archivo queue.Edit index.html para crear una interacción con bean.
  9. Crear un servlet para comunicar bean
  10. Haga clic con el botón derecho en Aplicación y seleccione la opción Limpiar y compilar.

Paso 1: Abra Netbeans y seleccione Java EE->Aplicación empresarial

Elija Proyecto como Java EE->Aplicación empresarial

Paso 2: ingrese el nombre del proyecto en el cuadro de texto correspondiente

Ingrese el nombre del proyecto

Paso 3: seleccione el servidor Glassfish

Seleccionar servidor Glashfish

Paso 4: Haga clic en Finalizar. Se crearán tres archivos. 1. Aplicación, 2. EJB y 3. Se crean archivos de guerra

Paso 5: Cree un bean controlado por mensajes en el componente EJB.

Paso 6: haga clic con el botón derecho en EJB y seleccione la opción Message Driven Beans e ingrese el nombre de EJB y el nombre del paquete y haga clic en Add-in project Destination y cree un recurso de destino.

Paso 7: Ingrese Nombre y seleccione Cola y haga clic en Aceptar y siguiente.

Nota: aquí estamos implementando la técnica de cola, por lo que el Tipo de destino debe ser Cola.

Paso 8: Crear una cola

Implementación:

  • Para cambiar este encabezado de licencia, seleccione Encabezados de licencia en Propiedades del proyecto.
  • Para cambiar este archivo de plantilla, seleccione Herramientas | Plantillas
  • Y abra la plantilla en el editor.

Ejemplo 

package amar;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSDestinationDefinition;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;



@JMSDestinationDefinition(name = "java:app/studentDemo", interfaceName = "javax.jms.Queue", 
                                resourceAdapter = "jmsra", destinationName = "studentDemo")

@MessageDriven(activationConfig = {

    @ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "java:app/studentDemo")

    ,

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

})

// Class implementing MessageListener interface
public class Student implements MessageListener {

    // Constructor
    public Student() {}

    // Method 1
    // @Override
    public void onMessage(Message message) {

        // Try block to check for exceptions
        try {

            TextMessage msg = (TextMessage) message;

            System.out.println("This is the message retrieved from Queue:" + msg.getText());

            if (msg.getText() == "Abhin")

            {

                System.out.println("OK");

            } else {

                System.out.println("No");
            }
        }

        // Catch block to handle the exceptions
        catch (Exception e) {

            System.out.println("Error Message:" + e.getMessage());
        }
    }
}

Paso 10: edite el archivo index.html para crear una interacción con bean.

Implementación: para cambiar este encabezado de licencia, elija Encabezados de licencia en Propiedades del proyecto. Para cambiar este archivo de plantilla, seleccione Herramientas | Plantillas y abra la plantilla en el editor.

Ejemplo

<!DOCTYPE html>
<html>
   <head>
       <title>TODO supply a title</title>
       <meta charset="UTF-8">
       <meta name="viewport" content="width=device-width, initial-scale=1.0">
   </head>
   <body>
       <div>Message Driven Bean Project</div>
       <form action="Student_Demo" method="POST">
           <input type="text" name="msg"><br><!-- comment -->
           <input type="submit" value="Add"/>
       </form>
   </body>
</html>

Paso 11: Cree un servlet para comunicar bean

Implementación:

  • Para cambiar este encabezado de licencia, seleccione Encabezados de licencia en Propiedades del proyecto.
  • Para cambiar este archivo de plantilla, seleccione Herramientas | Plantillas
  • Y abra la plantilla en el editor.

Ejemplo

package amar;

import java.io.IOException;
import java.io.PrintWriter;
import javax.annotation.Resource;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
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 = "Student_Demo", urlPatterns = {"/Student_Demo"})

public class Student_Demo extends HttpServlet {

    @Resource(mappedName = "jms/__defaultConnectionFactory")

    ConnectionFactory cf;

    @Resource(mappedName = "java:app/studentDemo")

    Queue dest;

  
     // Processes requests for both
     // HTTP <code>GET</code> and <code>POST</code> methods

      // Servlet request
      //@param request
      // Servlet response
      //@param response

     // If a servlet-specific error occurs
     // @throws ServletException
     // If an I/O error occurs
     // @throws IOException

     

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

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

        try (PrintWriter out = response.getWriter()) {

            // TODO output your page here
            // Sample code to be used here

            String msg = request.getParameter("msg");

            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet Student_Demo</title>");
            out.println("</head>");
            out.println("<body>");

            send(msg);

            out.println("<h1>Message Queued</h1>");
            out.println("</body>");
            out.println("</html>");

        }

    }

    // Method
    private void send(String message) {


        try {

            // Creating object of Connection class
            Connection con = cf.createConnection();
            // Creating object of Session class
            Session ses = con.createSession();
            // Creating object of MessageProducer class
            MessageProducer mp = ses.createProducer(dest);
            // Creating object of TextMessage class
            TextMessage tm = ses.createTextMessage();

            tm.setText(message);

            mp.send(tm);

        }

        // Catch block to handle the exception
        catch (Exception e) {

            System.out.println("Error" + e.getMessage());

        }

    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. 
    // Click on the + sign on the left to edit the code.">

    /**

     * Handles the HTTP <code>GET</code> method.

     *

     * @param request servlet request

     * @param response servlet response

     * @throws ServletException if a servlet-specific error occurs

     * @throws IOException if an I/O error occurs

     */

    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        processRequest(request, response);

    }

    /**

     * Handles the HTTP <code>POST</code> method.

     *

     * @param request servlet request

     * @param response servlet response

     * @throws ServletException if a servlet-specific error occurs

     * @throws IOException if an I/O error occurs

     */

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response)

    throws ServletException, IOException {

        processRequest(request, response);

    }

    /**

     * Returns a short description of the servlet.

     *

     * @return a String containing servlet description

     */

    @Override

    public String getServletInfo() {

        return "Short description";

    }// </editor-fold>

}

Paso 12: Haga clic con el botón derecho en Aplicación y seleccione la opción Limpiar y compilar. Limpiará el proyecto y se Construirá con éxito. Después de Construir con éxito, seleccione Implementar. Si hay algún error en la implementación, muestra todos esos errores. Una vez que la implementación tenga éxito, presione el botón Ejecutar para el proceso de ejecución.

Producción:

 

Interfaz de usuario

El mensaje está en cola para el servidor Glashfish

   

Información de mensajes en cola

Publicación traducida automáticamente

Artículo escrito por amarjukuntla1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *