WebSphere 9.0.5中MDB激活规范绑定失败求助(含MQ 2035错误)
WebSphere 9.0.5 中EJB MDB激活规范绑定异常解决与示例
一、异常根因定位
从堆栈日志能直接看到核心错误:MQRC NOT AUTHORIZED (2035),对应JMS错误JMSWMQ2013。说明MDB尝试连接MQ队列管理器MOWE时,提供的认证信息无效,或者队列管理器侧的权限配置不满足连接、访问队列的要求。
二、异常解决方案
- 检查激活规范认证信息:确认
ibm-ejb-jar-bnd.xmi或WebSphere控制台配置的用户名/密码正确。如果MQ采用操作系统认证,该用户必须在MQ服务器端真实存在。 - 配置队列管理器权限:
- 给用户组授予队列管理器连接权限:
setmqaut -m MOWE -t qmgr -g [用户组名] +connect +inq - 给用户组授予目标队列的访问权限:
setmqaut -m MOWE -t queue -n [目标队列名] -g [用户组名] +get +browse
- 给用户组授予队列管理器连接权限:
- 验证J2C认证别名:如果激活规范绑定了WebSphere的J2C认证别名,确认别名存储的用户名密码正确,且该别名已关联到MQ资源适配器。
- 测试环境临时方案(生产禁用):可临时修改队列管理器的
CHLAUTH规则,允许匿名连接,但生产环境绝对不能用这种方式。
三、EJB MDB激活规范示例配置
1. ejb-jar.xml 核心配置
<?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd" version="3.1"> <enterprise-beans> <message-driven> <ejb-name>MdbListener</ejb-name> <ejb-class>com.example.MdbListener</ejb-class> <messaging-type>javax.jms.MessageListener</messaging-type> <activation-config> <activation-config-property> <activation-config-property-name>destinationType</activation-config-property-name> <activation-config-property-value>javax.jms.Queue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>destination</activation-config-property-name> <activation-config-property-value>jndi/TargetQueue</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>queueManager</activation-config-property-name> <activation-config-property-value>MOWE</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>hostName</activation-config-property-name> <activation-config-property-value>xxxxxxx</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>port</activation-config-property-name> <activation-config-property-value>1234</activation-config-property-value> </activation-config-property> <activation-config-property> <activation-config-property-name>channel</activation-config-property-name> <activation-config-property-value>SYSTEM.DEF.SVRCONN</activation-config-property-value> </activation-config-property> </activation-config> </message-driven> </enterprise-beans> </ejb-jar>
2. ibm-ejb-jar-bnd.xmi 绑定配置
<?xml version="1.0" encoding="UTF-8"?> <ejbbnd:EJBJarBinding xmlns:xmi="http://www.omg.org/XMI" xmlns:ejbbnd="ejbbnd.xmi" xmlns:ejb="ejb.xmi" xmi:version="2.0"> <ejbJar href="META-INF/ejb-jar.xml#ejb-jar_ID"/> <messageDrivenBinding ejbName="MdbListener"> <activationSpecBinding jndiName="jndi/GG01"> <properties xmi:id="Property_1" name="authenticationAlias" value="MQAuthAlias"/> <properties xmi:id="Property_2" name="channel" value="SYSTEM.DEF.SVRCONN"/> <properties xmi:id="Property_3" name="queueManager" value="MOWE"/> </activationSpecBinding> </messageDrivenBinding> </ejbbnd:EJBJarBinding>
四、更优实现方式
- 用WebSphere控制台配置激活规范:替代手动编辑
ibm-ejb-jar-bnd.xmi,控制台可直观配置MQ参数、绑定认证别名,还能直接测试连接有效性,减少配置错误。 - 规范Maven依赖:确保项目依赖的MQ客户端jar包与WebSphere 9.0.5兼容,避免版本冲突。推荐使用
com.ibm.mq:mq-jms-client对应版本,或直接复用WebSphere自带的MQ资源适配器。 - 开启MQ调试日志:在WebSphere控制台开启MQ资源适配器的调试日志,便于跟踪连接失败的详细细节。
- 最小化权限配置:给MQ用户分配仅满足需求的最小权限,避免过度授权,提升系统安全性。
内容的提问来源于stack exchange,提问作者arul sounder
相关产品推荐
相关产品推荐

