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:
- Abra Netbeans y seleccione Java EE -> Aplicación empresarial
- Ingrese el nombre del proyecto en el cuadro de texto correspondiente
- Seleccionar servidor Glashfish
- Haga clic en Finalizar.
- Cree un bean controlado por mensajes en el componente EJB.
- 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.
- Ingrese Nombre y seleccione Cola y haga clic en Aceptar y siguiente.
- Ahora cree un archivo queue.Edit index.html para crear una interacción con bean.
- Crear un servlet para comunicar bean
- 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
Paso 2: ingrese el nombre del proyecto en el cuadro de texto correspondiente
Paso 3: seleccione el servidor Glassfish
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:
Publicación traducida automáticamente
Artículo escrito por amarjukuntla1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA