Websphere MQ 8.0 解決客戶機連接報2035錯誤碼 [轉]

應用程序與MQ服務器端的連接模式有兩種:綁定和客戶機連接。綁定模式僅適用於應用程序和MQ服務器運行在同一臺機器上,而客戶機連接模式則沒有限制,可用於兩者運行在不同機器或同一臺機器上。不過當應用程序和和MQ 服務器運行於同一臺機器上時,一般推薦使用綁定模式,該模式下兩者通過進程間通訊 (IPC) 協議進行通信,傳輸效率較高,且不受網絡狀況影響。

綁定模式配置比較簡單,一般情況下,只要在應用程序中提供隊列管理器名稱,即可連接到本地MQ服務器上的隊列管理器上,不需要提供MQ服務器主機名,監聽端口和服務器連接通道名稱。

客戶機連接模式比綁定模式配置稍微複雜,需要在MQ服務器中創建服務器連接通道,注意此處的通道類型爲服務器連接通道,該通道名稱需要在應用程序中配置,比如配置在MQEnvironment.channel屬性中,此外,還需要配置隊列管理器所在的主機名,監聽端口。

綁定模式的連接測試一般不會出什麼問題,而在客戶機連接模式測試時可能出現MQRC_NOT_AUTHORIZED - 2035錯誤,解決這個問題需要注意以下幾點:

  1. 隊列管理器開啓了通道認證記錄。通道認證記錄用來允許或阻止客戶端應用程序對MQ隊列管理器的連接,如果開啓了,則需要保證當前的通道認證記錄中的配置項允許你的應用程序通過你選定的服務器連接通道進行連接。常見的認證規則可以通過用戶名、IP地址等進行允許或阻止連接的控制,具體的配置方法這裏不作詳述,需要注意的是隊列管理器內置的系統對象,包括各種通道和通道認證記錄,可以通過下圖所示方式在MQ Explorer查看。如果你使用的是隊列管理器內置的服務器連接通道,比如SYSTEM.DEF.SVRCONN,則需要考慮內置的通道認證記錄,比如默認的SYSTEM.* 配置禁用了所有的系統通道,可以將該配置項刪除,也可以修改該配置項。

    隊列管理器內置的各種系統通道:

          

    隊列管理器內置的通道認證記錄:


    關於通道認證記錄所造成的訪問問題,最簡單直接的方式便是將通道認證記錄功能關閉,不過這樣也就失去了對客戶應用程序的連接授權控制。

    可以通過命令行中指令關閉通道認證記錄:
    RUNMQSC 隊列管理器名稱
    ALTER QMGR CHLAUTH(DISABLED)
    也可以通過MQ Explorer關閉:


     
  2. 注意服務器連接通道的MCAUSER(MCA用戶標識)屬性,該屬性表示通過該通道連接的應用程序在和隊列管理器進行通信時所使用的用戶名稱,其值必須爲MQ服務器上的mqm組內的用戶,否則便會出現2035錯誤。需要注意,如果MCAUSER爲空,則使用運行MQ應用程序所在的操作系統上的用戶名稱;如果MCAUSER不爲空,則使用該值作爲應用程序連接通道時使用的用戶名稱:



    可以通過命令行指令修改:
    RUNMQSC 隊列管理器名稱
    ALTER CHL(通道名) CHLTYPE(SVRCONN) MCAUSER('指定的用戶標識')
  3. 網上很多資料關於解決2035錯誤的方法都是對於Websphere MQ V7.x 的,我使用的是V8.0,使用網上的解決方法仍然會報2035錯誤,後來發現在V8.0中需要多注意一個配置才能解決2035錯誤。參考:http://stackoverflow.com/questions/25911557/websphere-mq-v8-mqrc-not-authorized-2035
    在V8中,與服務器的連接默認需要密碼去認證,可以通過配置隊列管理器的連接認證選項來解決:

    通過以下命令行指令解決,將連接認證選項中的SYSTEM.DEFAULT.AUTHINFO.IDPWOS的相關屬性配置爲OPTIONAL:
    ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(OPTIONAL)
    或者直接將連接認證選項置爲空,將其完全關閉,指令如下:
    ALTER QMGR CONNAUTH(' ') 注:單引號內有空格
    在執行完上述兩條命令中的任一條後,都需要刷新連接認證的緩存,指令如下:
    REFRESH SECURITY TYPE(CONNAUTH)

    也可以通過MQ Explorer關閉連接認證,如下圖,在隊列管理器中擴展屬性中將連接認證一欄置爲空即可:

通過以上注意點,一般可以解決連接MQ服務器的2035錯誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章