java - JBoss 6.3 问题上的 IBM MQ 资源适配器

标签 java jboss ibm-mq

我第一次尝试在 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/

相关文章:

java - 为什么列表元素不交换?

java - 使用 Oauth2 客户端凭据授予的 Java 应用程序的 Active Directory 身份验证产生 "unauthorized_client"错误

java - 我设置了 INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"但它仍然寻找 websphere

java - EJB 客户端未收到应答

java - 使用 Java 修改 jar 文件中的 xml 文件

c# - WebSphere MQ .NET API

java - protobuf 消息中的自引用字段

java - 启动NameNode失败

java - 如何通过 Java 代码(而不是通过 JMS API - 生存时间)在 WebSphere MQ(队列)中设置消息过期时间