I am trying to publish a message to a remote JMS queue by a pretty standard mechanism:
TopicConnection tc = null;
TopicSession ts = null;
TopicPublisher tp = null;
Properties p = new Properties();
String providerUrl = "iiop://servername:9810";
String contextFactory = "com.ibm.websphere.naming.WsnInitialContextFactory".trim();
p.put(javax.naming.Context.PROVIDER_URL, providerUrl );
p.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY, contextFactory );
InitialContext ct = new InitialContext(p);
{
Topic topic = (Topic)ct.lookup( "jms/customer_event" );
TopicConnectionFactory tcf = (TopicConnectionFactory)ct.lookup( "jms/TopicFactory2" );
tc = tcf.createTopicConnection();
....
..
..
}
Now, the Topic and TopicConnectionFactory lookups are fine but when it comes to tcf.createTopicConnection(), it throws:
javax.jms.JMSException: MQJMS2005: failed to create MQQueueManager for 'servername:QMGR1'
Inner exception(s):
com.ibm.mq.MQException: MQJE001: Completion Code 2, Reason 2059
java.net.ConnectException: Connection refused: connect
I opened up MQ explorer, and the topic is existing on the remote Queue manager. IS the TopicCoonectionFactory TopicFactory2 also supposed to reside on the queue manager? Because it does not.
What can be the cause of error?
When connecting, the details of host, port and channel must be correct. If the host or port are wrong, then the TCP socket is refused. If the channel name is wrong, then the queue manager will refuse the connection and close the socket. It is possible that you have all the details correct but that the listener on the queue manager is not running.
If the connection is getting as far as the queue manager then you will have an error in the
[WMQ Install dir]/qmgrs/[QMgr name]/errors/AMQERR01.LOGfile. If the connection gets to WMQ but cannot resolve the queue manager’s name or specifies the wrong QMgr then the error will be in[WMQ Install dir]/errors/AMQERR01.LOG. If there is no entry in either of these then the connection isn’t making it to WMQ and you need to check the listener or the network.