Boa tarde,
Estou tendo algumas dificuldades em consumir um JMS remotamente, o problema é:
No glassfish criei um javax.jms.TopicConnectionFactory e um javax.jms.Topic. Então crieu uma aplicação web que produz registros nessa fila:
@Named(value = "JMSProductor")
@Dependent
public class JMSProductorBean implements Serializable {
@Resource(name = "JMSTPFactory")
private ConnectionFactory cmf;
@Resource(name = "JMSTP")
private Destination destination;
public String send() throws JMSException {
TopicConnection connection = null;
try {
connection = ((TopicConnection) cmf.createConnection());
TopicSession topicSession =
connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicPublisher topicPublisher = topicSession.createPublisher((Topic) destination);
TextMessage message = topicSession.createTextMessage("Novo Tópico");
topicPublisher.publish(message);
} finally {
if (connection != null) {
connection.close();
}
}
return null;
}
E crieu uma outra aplicação que consome essa fila:
@MessageDriven( mappedName = "JMSTP", activationConfig = {
@ActivationConfigProperty(
propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
@ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Topic"),
})
public class TopicConsumerBean implements MessageListener {
@Override
public void onMessage(Message message) {
try {
TextMessage msg = (TextMessage) message;
System.out.println("#>" + msg.getText());
} catch (Exception e) {
System.out.println("deu erro!!!");
}
}
}
Ok, até aqui rodando no mesmo servidor funciona sem problemas. Consigo produzir e consumir a fila. Mas agora, como eu faço para que esse mesmo cenario funcione remotamente, com cada aplicação rodando em um servidor? Já tentei diversas formas de configurar seguindo a documentação do JEE6 e outros exemplos que achei por ai, mas nada funciona. Aqui http://docs.oracle.com/javaee/6/tutorial/doc/bncgv.html tem vários exemplos, mas a maioria com aplicações fazendo lookup remoto com InitialContext, não usando CDI. Isso que estou tentando fazer é possível? Isso parece ser uma coisa tão trivial quando falamos de filas que penso estar esquecendo de algum detalhe, ou não sei de algum detalhe. Preciso que duas aplicações web em servidores diferentes troquem informações usando JMS.
Aguadeço a ajuda.
)