Estou utilizando o código abaixo pra enviar uma mensagem JMS para um servidor glassfish que está no ip 192.168.1.146 e esta mensagem aparentemente não está chegando no servidor de fila.
Uma coisa que eu notei:
- Se eu alterar/excluir o nome da ConnectionFactory ou da Queue no servidor de fila, o aplicativo apresenta o erro informando que essa Factory ou essa Queue não existe. O que me garante, então, que o aplicativo está conectando a fila remota no ip 192.168.1.146
Só que estou sem saber o que está acontecendo porque o aplicativo faz o System.out.println informando que a mensagem foi enviada, MAS ESTA MENSAGEM ENVIADA FICA NA PARTE DE ‘Destinos Físicos’ da máquina LOCAL(onde está a aplicação), ao invés de ir para o servidor 192.168.1.146.
Vocês poderiam me ajudar a entender o que está acontencendo?
Obrigado a todos.
@Named(value="JMSEnvio")
@Dependent
public class JMSEnvio {
static int counter;
public void enviarMensagem() throws JMSException {
Context jndiContext = null;
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
Queue queue = null;
Topic topic = null;
MessageProducer messageProducer = null;
ObjectMessage msg = null;
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("org.omg.CORBA.ORBInitialHost", "192.168.1.146");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3701");
props.setProperty("java.naming.factory.url.pkgs","com.sun.enterprise.naming");
try {
System.out.println("INICIA CONTEXTO");
jndiContext = new InitialContext(props);
System.out.println("CONEXAO");
connectionFactory = (ConnectionFactory)jndiContext.lookup("jms/FabricaConexoes");
System.out.println("FILA");
queue = (Queue)jndiContext.lookup("jms/FilaServidor");
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
messageProducer = session.createProducer(queue);
Quotes quote = new Quotes("^BVSP", new Date(), counter++, 0, 0, 0, (int)(Math.random() * 100));
msg = session.createObjectMessage(quote);
msg.setStringProperty("symbol", quote.symbol);
msg.setFloatProperty("volume", quote.volume);
messageProducer.send(msg);
System.out.println("MENSAGEM ENVIADA PARA A QUEUE: " + quote);
connection.close();
} catch (NamingException e) {
Logger.getLogger(JMSEnvio.class.getName()).log(Level.SEVERE, null, e);
}
catch (JMSException e) {
Logger.getLogger(JMSEnvio.class.getName()).log(Level.SEVERE, null, e);
}
finally {
System.out.println("ENDED.");
if (connection != null) connection.close();
}
}
}