jueves, 3 de junio de 2010

Ejemplo rápido de Message Driven Beans

Para este ejemplo estoy usando Windows 7, Netbeans 6.8, JDK1.6 y Glassfish V3
Desde la consola de adminsitracion de Glassfish, creamos un JMS Connection Factory, con la siguiente información:

Luego creamos un JMS Destination Resource, con el siguiente código:




Posteriormente creamos un proyecto JEE llamado MDB




Luego creamos un servlet llamado Generador con el siguiente código:




Como variables de instancia, creamos
@Resource(mappedName="jms/QueueFactory")
javax.jms.QueueConnectionFactory queueConnection;
@Resource(mappedName="jms/Queue")
javax.jms.Queue queue;


protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try{
Connection connection=queueConnection.createConnection();
Session session=connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer=session.createProducer(queue);
MapMessage message=session.createMapMessage();
message.setString("nombre", "Carlos");
message.setString("apellido", "Marin");
message.setString("id", "A12311");
producer.send(message);
producer.close();
session.close();
connection.close();
}catch(Exception ex){
ex.printStackTrace();
}

}

Luego un creamos un message driven bean, en el asistente como Server Destinations seleccionamos jms/Queue.


Luego codificamos la clase generada, con el siguiente código, en la función onMessage:


public void onMessage(Message message) {
System.out.println("Saludos desde el MDB...");
try {
MapMessage msg = (MapMessage) message;
System.out.println("Nombre:" + msg.getString("nombre"));
System.out.println("Apellido:" + msg.getString("apellido"));
System.out.println("Id:" + msg.getString("id"));
} catch (Exception ex) {
ex.printStackTrace();
}
}

y ejecutamos el Servlet llamado Generador, que nos imprimirá la siguiente información en consola:

Saludos desde el MDB...

Nombre:Carlos
Apellido:Marin
Id:A12311



No hay comentarios:

Publicar un comentario