Bom dia,
estou trabalhando em um projeto que usa JMS.
Até então, eu nunca havia trabalhado com EJB, de forma que eu desconheço qualquer detalhe de configuração mais avançado sobre Session-Beans e MDBs.
Criei um cliente JMS:
public class TesteJMS {
private Context ctx;
/*A ConnectionFactory object encapsulates a set of connection configuration parameters that has been defined by an administrator.
A client uses it to create a connection with a JMS provider. */
private QueueConnectionFactory cf;
/*
*/
private Connection conn;
private Session session;
private Queue fila;
private MessageProducer messageProducer;
private MessageConsumer messageConsumer;
private TextMessage msg;
private ConsumidorBean consumidorBean;
public void teste(){
try {
consumidorBean = new ConsumidorBean();
ctx = new InitialContext();
cf = (QueueConnectionFactory) ctx.lookup("java:/XAConnectionFactory");
conn = cf.createConnection();
session = conn.createSession(true, 0);
fila = (Queue) ctx.lookup("MyQueue");
messageProducer = session.createProducer(fila);
messageConsumer = session.createConsumer(fila);
msg = session.createTextMessage("Congratulation, it works!");
messageConsumer.setMessageListener(consumidorBean);
messageProducer.send(msg);
conn.close();
} catch (NamingException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
}
}
e um consumidor da mensagem:
package com.mouseoverstudio.com.ejb;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.ejb.MessageDriven;
public @MessageDriven class ConsumidorBean implements MessageListener {
public void onMessage(Message msg) {
TextMessage tm = (TextMessage) msg;
try {
System.out.println("Mensagem: " + tm.getText());
} catch (JMSException e) {
e.printStackTrace();
}
}
}
Tenho o JBoss 4.2.2 GA instalado e com a fila MyQueue configurada.
Como faço para testar se o meu MDB está lendo a mensagem da fila? Preciso fazer o deploy dos dois arquivos(correto, né?), mas como faço para acessar o metódo teste para enviar a mensagem? Preciso adicionar um framework de controle(like struts) somente para realizar este teste?
Obrigado por qualquer ajuda.