我第一次尝试在 JBoss 中使用 IBM MQ 适配器(即使是第一次使用 JBoss)。我们正在将应用程序从WebSphere7 迁移到JBoss 6.3。为此,我需要配置与我们在 IBM WebSphere 上使用的相同的 MQ。因此我开始配置 IBM 资源适配器。以下是standalone.xml 文件配置。
下面的配置工作正常,但是我无法使用代码 (QueueConnectionFactory) context.lookup("java:/comp/env/serviceQCF")
获取 QueueConnectionFactory ,因为它抛出类转换异常(com.ibm.mq.connector.outbound.ConnectionFactoryImpl 无法转换为 javax.jms.QueueConnectionFactory)。
当我使用connection-definition class-name="javax.jms.QueueConnectionFactory"jndi-name="java:/comp/env/serviceQCF"enabled="true"pool-name="ConnectionClass"
,*JBoss 抛出异常
javax.naming.NameNotFoundException:comp/env/serviceQCF -- 服务 jboss.naming.context.java.comp.env.serviceQCF*
我尝试使用ConnectionFactory,但结果相同(名称未找到异常)
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.1">
<resource-adapters>
<resource-adapter id="wmq.jmsra.rar">
<archive>
wmq.jmsra.rar
</archive>
<transaction-support>LocalTransaction</transaction-support>
<connection-definitions>
<connection-definition class-name="com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl" jndi-name="java:/comp/env/serviceQCF" enabled="true" pool-name="ConnectionClass">
<config-property name="port">
1414
</config-property>
<config-property name="channel">
MQ.CLT.STH.CHL
</config-property>
<config-property name="hostName">
127.0.0.127
</config-property>
<config-property name="transportType">
MQ.CLIENT
</config-property>
<config-property name="queueManager">
MQSYKHT0
</config-property>
<security>
<application/>
</security>
<validation>
<background-validation>false</background-validation>
</validation>
</connection-definition>
</connection-definitions>
我还需要配置其他东西吗?我需要添加/修改任何类路径吗?如果是,在哪里以及如何?
当前在获取上下文时未设置任何属性:
上下文=新的InitialContext();
但尝试使用以下:
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "remote://localhost:4447");
但运气不好。
请帮助我。
最佳答案
正如 Doug 指出的,您必须使用 ManageQueueConnectionFactoryImpl,但对我来说这还不够。我还必须将以下内容添加到standalone.xml 中。如果没有它,我就无法将 IBM QueueConnectFactoryImpl 类转换为 JMS QueueConnectionFactory,即使该类实现了该接口(interface)。
<subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"/>
关于java - JBoss 6.3 问题上的 IBM MQ 资源适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32620860/