You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级MQ Classes for Java至9.3后出现2035 MQRC_NOT_AUTHORIZED错误求助

MQ Classes for Java 9.3升级后连接旧MQ服务器报2035的解决方案

问题根源

IBM在MQ Classes for Java 9.x系列版本中收紧了认证逻辑,默认会自动向MQ服务器提交客户端的身份信息(比如当前操作系统用户)。而你的第一台MQ服务器仅靠网络访问限制做防护,没有配置对应的身份授权策略,导致升级后的客户端提交的身份未被认可,触发2035 MQRC_NOT_AUTHORIZED错误。

可落地的解决办法

  • 强制客户端不提交身份信息:在连接第一台MQ服务器的代码里,显式设置用户ID为空字符串,比如:
    MQEnvironment.userID = "";
    // 或者用连接属性设置
    Hashtable<String, Object> props = new Hashtable<>();
    props.put(WMQConstants.USERID_PROPERTY, "");
    MQQueueManager qmgr = new MQQueueManager("QMGR_NAME", props);
    
    这样客户端会回到v6版本的无身份提交模式,适配旧服务器的配置。
  • 调整旧MQ服务器的通道认证规则:通过MQSC命令修改通道配置,允许匿名连接。例如:
    -- 临时关闭通道认证(适合测试环境)
    ALTER CHANNEL(YOUR_CHANNEL_NAME) CHLAUTH(DISABLED)
    
    生产环境建议配置更严格的地址映射规则,仅允许你的应用IP匿名访问:
    SET CHLAUTH(YOUR_CHANNEL_NAME) TYPE(ADDRESSMAP) ADDRESS(APP_SERVER_IP) USERSRC(CHANNEL) CHCKCLNT(ASQMGR)
    
  • 检查连接工厂的默认配置:如果用的是JMS连接工厂,确保没有默认填充用户ID属性,手动清空对应配置项。

验证要点

  1. 修改配置后重启应用,测试连接第一台MQ服务器是否恢复正常
  2. 确认第二台需要TLS1.3和客户端证书的服务器连接不受影响
  3. 查看MQ服务器的错误日志,确认2035错误不再出现

内容的提问来源于stack exchange,提问作者abinkleysf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:55:05