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

升级MQ Java客户端至9.3.1.0后遇MQJE001(2,2035)错误求助

IBM MQ 客户端升级后2035权限错误排查方案

问题背景

Java应用从com.ibm.mqjms 6.0.2.2升级到com.ibm.mq.allclient 9.3.1.0后,所有队列消息发送操作报错:

com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'

队列管理器返回AMQ9557E错误,提示用户ID [username]初始化失败。尝试禁用MQCSP认证的配置未生效:

Hashtable props = new Hashtable();
props.put(MQConstants.USER_ID_PROPERTY, false);
props.put(MQConstants.PASSWORD_PROPERTY,  false);
props.put(MQConstants.USE_MQCSP_AUTHENTICATION_PROPERTY, Boolean.FALSE);
this.queueManager = new MQQueueManager(getManager(), props);

附AMQERR01.LOG日志片段:

2023-01-03 13:28:41 - Process(2838.71) User(mqm) Program(amqrmppa)
                    Host([HOSTNAME]) Installation(Installation1)
                    VRMF(9.2.5.0) QMgr(TSTMQ01)
                    Time(2023-01-03T12:28:41.959Z)
                    ArithInsert1(2) ArithInsert2(2035)
                    CommentInsert1([USERNAME])

AMQ9557E: Queue Manager User ID initialization failed for '[USERNAME]'.

EXPLANATION:
The call to initialize the User ID '[USERNAME]' failed with CompCode 2 and Reason
2035. If an MQCSP block was used, the User ID in the MQCSP block was ''. If a
userID flow was used, the User ID in the UID header was '' and any CHLAUTH
rules applied prior to user adoption were evaluated case-sensitively against
this value.
ACTION:
Correct the error and try again.

排查步骤

  • 修正客户端配置参数
    当前代码中USER_ID_PROPERTY设置为false是错误的,该属性需传入字符串类型的用户ID,而非布尔值。MQ 9.x客户端对参数类型校验更严格,6.x版本可能忽略此错误,但9.x会导致认证逻辑异常。
    若要禁用MQCSP认证,只需保留USE_MQCSP_AUTHENTICATION_PROPERTY的设置,移除无效的用户ID和密码参数:

    Hashtable props = new Hashtable();
    props.put(MQConstants.USE_MQCSP_AUTHENTICATION_PROPERTY, Boolean.FALSE);
    this.queueManager = new MQQueueManager(getManager(), props);
    
  • 检查队列管理器CHLAUTH规则
    执行MQSC命令查看通道认证规则,确认是否存在限制[username]或客户端IP的规则:

    DISPLAY CHLAUTH(*) ALL
    

    重点排查TYPE(USERMAP)或TYPE(ADDRESSMAP)类型的规则,若存在拒绝访问的配置,需调整规则允许目标用户或IP的访问。

  • 验证用户权限配置
    确认[username]拥有队列管理器和目标队列的必要权限,执行以下MQSC命令:

    DISPLAY AUTHREC PROFILE(*) PRINCIPAL([username]) OBJTYPE(QMGR)
    DISPLAY AUTHREC PROFILE(你的目标队列名) PRINCIPAL([username]) OBJTYPE(QUEUE)
    

    确保用户至少拥有CONNECT(队列管理器)和PUT(目标队列)权限,若无对应权限,使用SET AUTHREC命令添加。

  • 检查通道MCAUSER设置
    查看客户端连接的通道配置,确认MCAUSER属性是否覆盖了客户端传递的用户ID:

    DISPLAY CHANNEL(你的通道名称) MCAUSER
    

    若MCAUSER已设置,需确保该用户ID拥有对应的访问权限,或根据需求调整MCAUSER配置。

  • 确认版本兼容性与补丁情况
    当前客户端版本9.3.1.0与队列管理器版本9.2.5.0属于兼容范围,但需检查IBM MQ官方发布说明,确认是否存在认证相关的已知bug,必要时安装对应补丁。

  • 启用客户端调试日志
    添加JVM参数开启MQ客户端调试日志,追踪认证过程的详细信息:

    -Dcom.ibm.mq.commonservices.logName=mqclient.log
    -Dcom.ibm.mq.commonservices.level=DEBUG
    

    分析日志中认证流程的细节,确认参数传递是否正确、认证被拒绝的具体原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:05:43