我想通過一個非常標準的機制來發布消息到遠程JMS隊列主題連接:現在能夠連接到遠程隊列管理器,但不能創建
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();
....
..
..
}
,主題和TopicConnectionFactory的查找是不錯,但說到tcf.createTopicConnection()
,它拋出:
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
我打開了MQ Explorer,然後在主題上存在遠程隊列管理器。 TopicCoonectionFactory TopicFactory2
也應該駐留在隊列管理器上嗎?因爲它不。 什麼可能是錯誤的原因?
謝謝。所有細節都是正確的。現在我會接受你的回答,並根據你的建議進行調查。 – Victor 2012-08-01 00:43:17
在帖子標題中有一個小小的不一致之處:「能夠連接到QMgr ......」如果您沒有用迄今爲止給出的建議來解決問題,您可能需要更新帖子以解釋爲什麼您認爲自己已連接到QMgr。 2059響應代碼表明連接*不是成功的,這就是我根據我的迴應所做的。 – 2012-08-01 01:30:30
您好......我認爲與隊列管理器的連接已成功,但主題連接失敗。我的理由是,在錯誤中,它實際上顯示了在websphere mq中定義的隊列管理器的名稱。如果連接不成功,它如何知道隊列管理器的名稱是什麼? – Victor 2012-08-01 14:43:15