2014-05-07 95 views
3

我想從獨立程序連接一個隊列管理器,並得到以下錯誤。從獨立程序|連接IBM MQ錯誤:('MQRC_NOT_AUTHORIZED')

Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED'). 

我知道連接ID需要在MQ上進行配置以允許此連接。

但奇怪的是,當我嘗試從Websphere Application Server(WAS)連接時,我已成功連接到隊列。 我的獨立程序使用與WAS相同的JDK。

這兩個程序的JVM ID應該相同嗎?

我正在使用CCDT文件連接到隊列。

回答

3

這是客戶端連接上的授權錯誤。毫無疑問。請參閱here進行故障排除技術說明。

爲了開始,請確保您正在使用的用戶具有適當的權利(不是)。確保您沒有使用WMQ v7.1或更新版本的MQ管理員帳戶。 由於7.1 MQ管理員不允許使用默認配置創建客戶端連接。這個默認值可以改變。見here

一種選擇是在客戶端通道上使用MCA用戶。這會覆蓋您傳遞的任何用戶。這是解釋here

WAS使用不同的用戶或綁定連接模式。

+0

要添加到此答案(感謝您引用Technote,順便說一下)由Java/JMS WMQ客戶端發送的ID取決於您使用的是哪個版本。但試圖讓客戶發送正確的ID是相反的。如果您允許客戶端設置ID,則用於授權連接的值可能會更改並導致身份驗證失敗。最好安排在QMgr根據證書DN(最好),IP地址或客戶端傳遞的ID映射設置所需的'MCAUSER'值,但僅限於枚舉列表中經過驗證且合法的映射一個靜態值。 –

+0

映射客戶端ID與答案中提到的「MCAUSER」設置類似,但使用「CHLAUTH」規則動態映射到任意數量的值或從任意數量的值中動態映射。另外,如果使用WMQ資源管理器,請務必安裝[SupportPac MS0P](http://ibm.co/SupptPacMS0P)並啓用授權事件。這會告訴您失敗的API調用,涉及的對象,進行調用的用戶ID以及使用的確切選項。這有助於調試auths錯誤,因此您知道,例如,它是「OPEN」而不是「CONNECT」失敗,反之亦然。 –

+0

感謝您的回覆。我們的確在使用QMgr方面的授權。這只是我正在與另一個用戶一起運行獨立程序。我將其添加到權限列表中,並解決了問題。 – Mehshad