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

Wildfly 20配置IBM MQ资源适配器9.2.5.0报IJ000455错误咨询

错误原因

IJ000455: Wrong ManagedConnectionFactory sent to allocateConnection是Wildfly内置IronJacamar连接管理器的标准校验报错:分配连接时,容器会校验调用方传入的ManagedConnectionFactory(简称MCF)实例,和连接池初始化时绑定的MCF实例是否逻辑相等。
日志中两个实例打印的对象哈希值完全一致却仍然触发报错,核心诱因有两点:

  1. IBM MQ 9.2.5.0版本自带的wmq.jmsra.rar存在已知实现缺陷:com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl类没有遵守JCA规范要求实现equals()和hashCode()方法,默认继承自Object的引用相等逻辑,在Wildfly对MCF做Javassist代理包装后会出现校验误判。
  2. 当前配置缺少类加载隔离设置,如果MQ适配器类同时被容器类加载器和应用类加载器加载,哪怕全限定类名完全相同,也会被判定为非同一类实例,触发校验失败。
配置调整方案

按以下顺序调整配置即可解决问题:

  • 在<resource-adapter>标签内,和<archive>、<transaction-support>同级,添加类加载隔离和Bean校验关闭配置,避免容器对MCF做不必要的代理增强:
<bean-validation-mode>NONE</bean-validation-mode>
<class-loading>
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
</class-loading>
  • 调整<connection-definition>标签属性,补充XA事务场景的资源包装配置,修正实例匹配逻辑:
<connection-definition 
    class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" 
    jndi-name="jms/IBMMQ_CONNECTIONFACTORY" 
    pool-name="ibmmq-connection-definition"
    interleaving="false"
    same-rm-override="false"
    wrap-xa-resource="true"
    use-java-context="true">
  • 在连接定义的config-property列表中添加CCDT地址的空声明,避免适配器初始化时自动生成额外MCF实例:
<config-property name="ccdtUrl"></config-property>
  • 调整部署方式:不要将wmq.jmsra.rar打包到业务应用的WAR/EAR包中,应该将其作为Wildfly全局模块部署到modules/system/layers/base/com/ibm/wmq/main/路径下,编写对应module.xml声明依赖后,将资源适配器配置中的<archive>wmq.jmsra.rar</archive>改为引用模块名,彻底规避类加载冲突。
  • 如果上述配置调整后仍然复现问题,直接将IBM MQ资源适配器升级到9.2.5.1及更高的9.2.x补丁版本,IBM在该补丁中正式修复了MCF类的equals/hashCode实现缺陷,完全适配Wildfly的JCA校验逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:27:24