En este ejemplo vamos a mostrar como hacer funcionar Java Message Service desde Glassfish y un aplicativo java.



Una vez hecho esto, damos click sobre JMS Resources y nos mostrará dos opciones:
Connection Factories y Destination Resources






Luego, creamos una aplicación JavaEE y le llamamos PracticaJMS
El presente ejercicio consiste en crear un servlet que cree un mensaje y que luego este servlet sea consumido por otro servlet e imprima el mensaje original.



Generador.java
//Variables de instancia
@Resource(mappedName = "jms/queueFactory")
javax.jms.QueueConnectionFactory queueConnectionFactory;
@Resource(mappedName = "jms/queue")
javax.jms.Queue queue;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String text = "Esta es una prueba!!!";
try {
Connection connection = queueConnectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
TextMessage message = session.createTextMessage(text);
MessageProducer producer = session.createProducer(queue);
producer.send(message);
producer.close();
session.close();
connection.close();
response.sendRedirect("Consumidor");
} catch (JMSException ex) {
ex.printStackTrace();
}
}

Luego creamos un nuevo Servlet llamado Consumidor


Con el siguiente código:

Consumidor.java
//Variables de instancia
javax.jms.QueueConnectionFactory queueConnectionFactory;
@Resource(mappedName = "jms/queue")
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();
List messages = new ArrayList();
String mensaje = "No hay mensaje";
try {
Connection connection = queueConnectionFactory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
QueueBrowser browser = session.createBrowser(queue);
Enumeration queueEnum = browser.getEnumeration();
while (queueEnum.hasMoreElements()) {
Object obj = queueEnum.nextElement();
if (obj instanceof TextMessage) {
mensaje = ((TextMessage) obj).getText();
}
}
browser.close();
session.close();
connection.close();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Consumidor</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>" + mensaje + "</h1>");
out.println("</body>");
out.println("</html>");
} catch (JMSException ex) {
ex.printStackTrace();
} finally {
out.close();
}
}
Finalmente ejecutamos Generador y obtendremos la salida:

No hay comentarios:
Publicar un comentario