JMS between two JBoss AS instances
ternovsky Nov 16, 2012 7:15 AMI have two JBoss AS 7 instances with differernt IP(X and Y). X instance send queue message from Singleton EJB to Queue into Y instance. Queues have the same JNDI into instances. It's queue/test.
Into X instance I create InitialContext for Y, lookup ConnectionFacory, Queue and send message. But message get X instance queue instead Y instance queue. Below X instance code:
package com.kg.interaction; import javax.annotation.PostConstruct; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.jms.*; import javax.naming.Context; import javax.naming.InitialContext; import java.util.Properties; /** * Created with IntelliJ IDEA. * User: ternovski * Date: 14.11.12 * Time: 14:33 */ @Startup @Singleton public class TestSingleton { // Set up all the default values private static final String DEFAULT_MESSAGE = "Hello, World!!! =))))"; private static final String DEFAULT_CONNECTION_FACTORY = "jms/RemoteConnectionFactory"; private static final String DEFAULT_DESTINATION = "jms/queue/test"; private static final String DEFAULT_MESSAGE_COUNT = "1"; private static final String DEFAULT_USERNAME = "au"; private static final String DEFAULT_PASSWORD = "ua"; private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory"; private static final String PROVIDER_URL = "remote://srv-oracle-06:4447"; @PostConstruct public void postConstruct() throws Exception { ConnectionFactory connectionFactory = null; Connection connection = null; Session session = null; MessageProducer producer = null; MessageConsumer consumer = null; Destination destination = null; TextMessage message = null; Context context = null; try { final Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY); env.put(Context.PROVIDER_URL, PROVIDER_URL); env.put(Context.SECURITY_PRINCIPAL, DEFAULT_USERNAME); env.put(Context.SECURITY_CREDENTIALS, DEFAULT_PASSWORD); context = new InitialContext(env); String connectionFactoryString = DEFAULT_CONNECTION_FACTORY; connectionFactory = (ConnectionFactory) context.lookup(connectionFactoryString); String destinationString = DEFAULT_DESTINATION; destination = (Destination) context.lookup(destinationString); connection = connectionFactory.createConnection(DEFAULT_USERNAME, DEFAULT_PASSWORD); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); producer = session.createProducer(destination); consumer = session.createConsumer(destination); connection.start(); int count = Integer.parseInt(DEFAULT_MESSAGE_COUNT); String content = DEFAULT_MESSAGE; for (int i = 0; i < count; i++) { message = session.createTextMessage(content); producer.send(message); } } catch (Exception e) { throw e; } finally { if (context != null) { context.close(); } if (connection != null) { connection.close(); } } } }