2012-01-25 334 views
2

我正在構建一個Java應用程序,該應用程序應該能夠連接到IBM WebSphere MQ隊列管理器,並且我無法理解爲什麼我不斷獲取這個錯誤。com.ibm.mq.MQException:MQJE001:完成代碼'2',原因'2035'

我已經通過MQ Explorer使用setmqaut爲我的用戶ID授予管理權限。我還在我的頻道中定義了MCAUSER,並且我還將用戶與MQ Windows組關聯。

任何人都可以請一個簡短的教程/例如如何連接一個Java程序與Windows環境上的WebSphere MQ安裝?

+0

什麼版本WMQ服務器和客戶端? –

回答

4

如果您在通道中設置了MCAUSER,則這將覆蓋客戶端提供的任何ID。如果你仍然得到2035,那麼有兩種可能性。第一個是MCAUSER中的ID尚未使用setmqaut命令正確授權。第二個(至少對於Windows)是它不是正確的ID。例如,如果通道定義中有MCAUSER(userx)而不是MCAUSER('[email protected]'),那麼顯示的ID與WMQ解析的SID完全不同。在筆記本電腦和WMQ服務器上定義userx時可能會發生這種情況。服務器必須能夠解析呈現給它附帶的SID的ID。

WMQ v7.1有關於CHLAUTH規則的其他注意事項。如果提供的ID具有管理權限,則默認情況下,WMQ將在所有通道上阻止它。這是因爲管理標識可以完全訪問WMQ,並且可以使用WMQ服務或觸發功能在QMgr的主機服務器上遠程執行代碼。因此,如果您擁有WMQ v7.1,則需要在所需頻道上啓用WMQ管理員訪問權限,或者使用非管理用戶ID進行連接。

最後,調試所有這些最簡單的方法是在QMgr上啓用授權事件,並將SupportPac MS0P安裝到WMQ資源管理器中。這將在每次出現2035時生成一條事件消息,然後MS0P插件將其解析爲可讀格式。該消息會告訴你...

  • 什麼API調用失敗。 (CONNECTOPENCLOSE)上的API調用
  • 的ID作出API調用
  • 抵靠該API調用作出

對象指定

  • 選項這可以有助於確定您是否提供了所有正確的權限。例如,Java和JMS類將查詢他們觸摸的每個對象。這是他們如何在連接時發現DLQ名稱或打開隊列時的BOQNAME。所以,如果你沒有提供的QMGR +inq和排隊你會得到一個2035年的事件消息會告訴你使用的對象和選項。同樣,如果你讀了帶毒郵件和ID沒有權利擱置隊列或死隊列然後你出現(除非你看到事件消息),一個2035年發生從中你有一個隊列愉快地消費信息。所以請確保啓用Auth事件並使用MS0P。

    如果你想有一個友好的教程WMQ安全,有幾個會議報告存檔here

  • +0

    我試圖使用構造函數(java) PCFMessageAgent(字符串主機, INT端口, 字符串通道) 與SVRCONN通道,但我得到這個錯誤com.ibm.mq.MQException:MQJE001:完成代碼'2 ',原因'2035'。我嘗試連接的頻道是SYSTEM.DEF.SVRCONN。爲什麼我得到錯誤。 – Ajay

    +0

    在MQ標記中搜索2035。我已經提供了幾個關於如何使用錯誤日誌和身份驗證事件消息來診斷身份驗證錯誤的答案。如果這些沒有幫助,請發佈一個新問題。 –

    相關問題