【问题标题】:IBM MQ Resource adaptor on JBoss 6.3 IssueJBoss 6.3 问题上的 IBM MQ 资源适配器
【发布时间】:2015-09-17 00:37:36
【问题描述】:

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

我需要配置其他东西吗?我需要添加/修改任何类路径吗?如果是,在哪里以及如何?

目前在获取上下文时未设置任何属性:

context = new InitialContext();

但尝试使用以下的:

    final Properties env = new Properties();  
    env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");  
    env.put(Context.PROVIDER_URL, "remote://localhost:4447"); 

但没有运气。

请帮帮我。

【问题讨论】:

    标签: java jboss ibm-mq


    【解决方案1】:

    Doug 指出您必须使用 ManageQueueConnectionFactoryImpl,但对我来说这还不够。我还必须将以下内容添加到standalone.xml。没有它,我无法将 IBM QueueConnectFactoryImpl 类转换为 JMS QueueConnectionFactory,即使该类实现了该接口。

    <subsystem xmlns="urn:jboss:domain:messaging-activemq:1.0"/>
    

    【讨论】:

    • 您能否具体说明,我们如何声明 QM/SSL 详细信息?
    • 在 JBoss EAP 7.2 上需要添加以下内容:
    【解决方案2】:

    这里有几点需要注意。 JMS 规范具有特定领域:

    QueueConnectionFactory
    TopicConnectionFactory
    

    以及非特定领域:

    ConnectionFactory
    

    您的服务器配置文件中应该有正确的代码类型。请注意,您可以查看打包在 IBM MQ JCA 的 META-INF 文件夹中的 ra.xml 文件以了解类型:

    com.ibm.mq.connector.outbound.ManagedTopicConnectionFactoryImpl
    com.ibm.mq.connector.outbound.ManagedQueueConnectionFactoryImpl
    com.ibm.mq.connector.outbound.ManagedConnectionFactoryImpl
    

    具体来说,对于 QueueConnectionFactory 的强制转换,您应该使用 ManagedQueueConnectionFactoryImpl。

    请注意,IBM MQ JCA 托管对象不能在远程客户端中使用。它们只能从加载 IBM MQ JCA 的 JVM 访问。

    【讨论】:

      【解决方案3】:

      我认为您应该先定义目标“java:/comp/env/serviceQCF”,然后再尝试将其与资源适配器一起使用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-17
        • 2021-07-01
        • 2016-01-23
        • 1970-01-01
        • 1970-01-01
        • 2014-11-16
        • 2022-06-16
        • 2018-05-16
        相关资源
        最近更新 更多