我在Wildfli20.0.0中配置了IBM资源适配器9.2.5.0,如下所示:
<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连接时,我会得到以下错误:
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)发布于 2022-06-17 13:48:06
APAR IT37469是这里的起点。它解决了与资源适配器属性的getter返回的数据类型不一致的问题--迫使它们返回对象类型(正如Java规范所要求的那样),而不是原语(许多,但不是所有的应用程序服务器都能容忍)。
不幸的是,修复没有完全应用于CD发行版,因此9.2.5已经报告了问题,并由Felix很好地解释了。
已对MQ9.3.0进行了修正--参见APAR IT40764
发布于 2022-06-16 08:02:12
在AbstractConnectionManager.allocateConnection()中,使用equals()对两个ManagedConnectionFactoryImpl实例(池和MCF)进行了比较。尽管这两个实例实际上都是相同的(哈希代码f85b573c,因此==比较将返回true),但equals()返回false,即com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl的equals()实现违反了java.lang.Object.equals()的约定。它这样做是因为它使用==而不是Objects.equals(..., ...)来比较==值。所述属性的类型为int,但使用的getter返回Integer。当自动装箱int值时,Integer.valueOf()在内部使用.这将返回新的实例,每次调用值都超出范围-128.127。
为了解决这个问题,我不得不回到IBM资源适配器的9.2.4.0版本。
https://stackoverflow.com/questions/72642423
复制相似问题