在 MDB 中使用 JNDI 连接工厂



我们将MDB从IBM web sphere迁移到Jboss 7。我们的消息传递代理是 IBM MQ,我们使用资源适配器进行通信。我们在 Jboss 7 中定义了 JNDI 级别的 jms 连接工厂,我们希望在 EJB 中使用。

我们试图放入 ejb-jar.xml,但它不起作用,还有其他解决方案吗?

<?xml version="1.1" encoding="UTF-8"?>
<jboss:ejb-jar xmlns:jboss="http://www.jboss.com/xml/ns/javaee">
    <enterprise-beans>
        <message-driven>
            <ejb-name>MessageBean</ejb-name>
            <ejb-class>com.hi.helloMessageBean</ejb-class>
                <messaging-type>javax.jms.MessageListener</messaging-type>
    <transaction-type>Container</transaction-type>
    <activation-config>
        <activation-config-property>
            <activation-config-property-name>destinationType</activation-config-property-name>
            <activation-config-property-value>javax.jms.Queue</activation-config-property-value>
        </activation-config-property>



                 <activation-config-property>
                    <activation-config-property-name>destination</activation-config-property-name>
                    <activation-config-property-value>jms/queue_1</activation-config-property-value>
                </activation-config-property>
                <activation-config-property>
                    <activation-config-property-name>connectionFactoryJndiName</activation-config-property-name>
                    <activation-config-property-value>jms/connec_fact_1</activation-config-property-value>
                </activation-config-property>

                <activation-config-property>
                    <activation-config-property-name>  
                        useJNDI  
                    </activation-config-property-name>
                    <activation-config-property-value>  
                        true  
                    </activation-config-property-value>
                </activation-config-property>

</activation-config>                

        </message-driven>
    </enterprise-beans>
    <assembly-descriptor>
        <d:delivery>
            <ejb-name>essageBean</ejb-name>
            <d:active>true</d:active> <!-- Change to false, to disable MDB delivery. -->
        </d:delivery>
        <container-transaction>
             <method>
                  <ejb-name>MessageBean</ejb-name>
                  <method-name>*</method-name>
             </method>
            <trans-attribute>RequiresNew</trans-attribute>
        </container-transaction>        
    </assembly-descriptor>
</jboss:ejb-jar>

很难知道如何在提供的有限信息下回答您的问题。 如果出现"找不到名称"异常,那么所有 JNDI 名称的格式应为:

java:jboss/jms/queue_1

所有配置文件中的 JNDI 名称应与您在 Web UI 的 JNDI 视图中看到的名称完全匹配。

此外,您最好将useJNDI设置为 false ,并将destination名称设置为 IBM MQ 队列名称。 只有少数情况需要在 JBoss 服务器配置文件的资源适配器部分中定义队列。

最新更新