2012-07-31 38 views
2

我想通過一個非常標準的機制來發布消息到遠程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也應該駐留在隊列管理器上嗎?因爲它不。 什麼可能是錯誤的原因?

回答

2

連接時,主機,端口和通道的詳細信息必須正確。如果主機或端口錯誤,則TCP套接字被拒絕。如果通道名稱錯誤,則隊列管理器將拒絕連接並關閉套接字。有可能您的所有細節都正確,但隊列管理器上的偵聽器未運行。

如果連接距離隊列管理器越來越近,那麼[WMQ Install dir]/qmgrs/[QMgr name]/errors/AMQERR01.LOG文件中將出現錯誤。如果連接到達WMQ但無法解析隊列管理器的名稱或指定錯誤的QMgr,則錯誤將在[WMQ Install dir]/errors/AMQERR01.LOG中。如果其中任何一個都沒有條目,則連接不會將其發送到WMQ,您需要檢查監聽器或網絡。

+0

謝謝。所有細節都是正確的。現在我會接受你的回答,並根據你的建議進行調查。 – Victor 2012-08-01 00:43:17

+0

在帖子標題中有一個小小的不一致之處:「能夠連接到QMgr ......」如果您沒有用迄今爲止給出的建議來解決問題,您可能需要更新帖子以解釋爲什麼您認爲自己已連接到QMgr。 2059響應代碼表明連接*不是成功的,這就是我根據我的迴應所做的。 – 2012-08-01 01:30:30

+0

您好......我認爲與隊列管理器的連接已成功,但主題連接失敗。我的理由是,在錯誤中,它實際上顯示了在websphere mq中定義的隊列管理器的名稱。如果連接不成功,它如何知道隊列管理器的名稱是什麼? – Victor 2012-08-01 14:43:15

0

2059連接被拒絕極有可能是MQ服務器主機名和/或端口中的網絡錯誤或類型。仔細檢查您在WebSphere和網絡連接中的配置。

的JavaDoc的ConnectException還指出,同時試圖將套接字連接到遠程地址和端口時發生錯誤,這http://docs.oracle.com/javase/6/docs/api/java/net/ConnectException.html

信號。通常,連接被遠程拒絕(例如,沒有進程正在監聽遠程地址/端口)。

+0

主機名/端口的n/w錯誤和輸入錯誤的可能性較小。原因是它能夠毫無問題地查找Topic和TopicConnectionFactory的jndi名稱。它還在錯誤消息中顯示隊列管理器的名稱,但在嘗試創建主題連接時失敗。 – Victor 2012-08-01 01:00:46

相關問題