簡體   English   中英

JMS MQ綁定問題

[英]JMS MQ binding problem

我在帶有MDB的MQ隊列上綁定JMS時遇到了這個奇怪的問題

消息驅動的EJB: CrbEventMessageAsynchronousService無法連接到JMS目標: queue.contratto.crb.input.publicQueue 錯誤是:

javax.jms.JMSExceptionMQJMS1017 :非本地MQ隊列對於接收或瀏覽無效>

我檢查了QueueManager ,將mq隊列定義為本地,而不是異常QueueManager的遠程。

可能是應用程序正在打開以供讀取的最頂層隊列是在本地定義的。 但是,WMQ解析到的隊列不是。 例如,如果您在遠程群集隊列上定義本地別名,則解析的隊列是非本地的。 另一個可能的原因是,您打算打開供輸出的隊列實際上也正在為輸入而打開。 這實際上很常見。

最后,將WMQ客戶端連接到與預期不同的隊列管理器也很常見。 例如,連接到QMGRA,並且隊列對象指定了全限定名稱,例如QUEUE @ QMGRB。 即使隊列位於QMGRB上,並且JNDI對象通過名稱指定了該隊列管理器,QMGRA上的連接仍將其解析為傳輸隊列,因此將其視為非本地隊列。

要在Dev中解決此類錯誤,最好的方法之一就是使用SupportPac MA0W 此SupportPac可作為API出口或通道出口運行,並以人類可讀的語言列出所有API調用以及為該調用選擇的所有選項。 這將明確顯示打開的對象名稱,解析的對象以及使用的選項。

或者,您可以使用strmqtrc打開跟蹤。 完成后,別忘了用endmqtrc禁用它! 這些跟蹤在QMgr服務器上啟用和禁用,並跟蹤WMQ API調用。 在客戶端上可以運行等效的跟蹤,但是這些跟蹤可能無法顯示所需的詳細程度。

最后,建議打印鏈接到JMS異常的所有異常。 JMS異常是一個多級數據結構,其中鏈接的異常包含特定於提供程序的值。 例如,JMS安全性異常可能是WMQ授權錯誤。 但是話又說回來,這可能是密鑰庫或文件系統中的錯誤。 如果鏈接的異常未顯示WMQ 2035原因碼,則不是WMQ安全錯誤。 Infocenter 在JMS的WebSphere MQ類中名為Exceptions的部分中描述了如何打印鏈接的異常數據。

請注意,我提供了v7.0 WMQ文檔的鏈接。 如果您在v6中進行編碼,則這些代碼可能並不完全准確,您可能需要查看v6.0信息中心 由於WMQ v6.0已於2011年9月停產,因此強烈建議您在v7.0上進行所有新開發。 如果需要v7.0客戶端,則可以將其作為SupportPac MQC7下載,並與v6.0 WMQ服務器向后兼容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM