首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IJ000455: IBM资源适配器9.2.5.0中的“错误ManagedConnectionFactory发送到allocateConnection”

IJ000455: IBM资源适配器9.2.5.0中的“错误ManagedConnectionFactory发送到allocateConnection”
EN

Stack Overflow用户
提问于 2022-06-16 08:02:12
回答 2查看 152关注 0票数 1

我在Wildfli20.0.0中配置了IBM资源适配器9.2.5.0,如下所示:

代码语言:javascript
复制
                <resource-adapter id="wmq.jmsra.rar">
                    <archive>
                        wmq.jmsra.rar
                    </archive>
                    <transaction-support>XATransaction</transaction-support>
                    <connection-definitions>
                        <connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="jms/IBMMQ_CONNECTIONFACTORY" pool-name="ibmmq-connection-definition">
                            <config-property name="hostName">${env.HOSTNAME}</config-property>
                            <config-property name="port">${env.PORT}</config-property>
                            <config-property name="channel">${env.CHANNEL}</config-property>
                            <config-property name="transportType">CLIENT</config-property>
                            <config-property name="queueManager">${env.QUEUE_MANAGER}</config-property>
                        </connection-definition>
                    </connection-definitions>
                </resource-adapter>

当使用此连接工厂创建MQ连接时,我会得到以下错误:

代码语言:javascript
复制
MQJCA1011: Failed to allocate a JMS connection
...
Caused by: javax.resource.ResourceException: IJ000455: Wrong ManagedConnectionFactory sent to allocateConnection (Pool=com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl@f85b573c, MCF=com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl@f85b573c)
    at org.jboss.jca.core.connectionmanager.AbstractConnectionManager.allocateConnection(AbstractConnectionManager.java:784) ~[?:?]
    at com.ibm.mq.connector.outbound.ConnectionFactoryImpl.createManagedJMSConnection(ConnectionFactoryImpl.java:309)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-17 13:48:06

APAR IT37469是这里的起点。它解决了与资源适配器属性的getter返回的数据类型不一致的问题--迫使它们返回对象类型(正如Java规范所要求的那样),而不是原语(许多,但不是所有的应用程序服务器都能容忍)。

不幸的是,修复没有完全应用于CD发行版,因此9.2.5已经报告了问题,并由Felix很好地解释了。

已对MQ9.3.0进行了修正--参见APAR IT40764

票数 2
EN

Stack Overflow用户

发布于 2022-06-16 08:02:12

AbstractConnectionManager.allocateConnection()中,使用equals()对两个ManagedConnectionFactoryImpl实例(池和MCF)进行了比较。尽管这两个实例实际上都是相同的(哈希代码f85b573c,因此==比较将返回true),但equals()返回false,即com.ibm.mq.connector.outbound.ManagedConnectionFactoryImplequals()实现违反了java.lang.Object.equals()的约定。它这样做是因为它使用==而不是Objects.equals(..., ...)来比较==值。所述属性的类型为int,但使用的getter返回Integer。当自动装箱int值时,Integer.valueOf()在内部使用.这将返回新的实例,每次调用值都超出范围-128.127。

为了解决这个问题,我不得不回到IBM资源适配器的9.2.4.0版本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72642423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档