使用默认的jms-ra.rar,MDB在JBoss 5中监听远程队列时,我真正需要哪些激活配置属性

时间:2014-10-03 16:16:37

标签: jms jboss5.x jca

我试图了解我真正需要的配置属性,以便在远程JMS提供程序上设置的队列中部署JBoss 5进程消息。我计划使用ejb-jar.xml配置激活规范,我不打算只配置我真正需要的东西,而不是更多。我的理解是,在使用的ra.xml中配置了规范的允许配置。如果我从jms-ra.rar查找ra.xml,我可以看到下面的inbound-resourceadapter元素

  <inbound-resourceadapter>
     <messageadapter>        
        <messagelistener>
           <messagelistener-type>javax.jms.MessageListener</messagelistener-type>
           <activationspec>
              <activationspec-class>org.jboss.resource.adapter.jms.inflow.JmsActivationSpec</activationspec-class>
              <required-config-property>
                  <config-property-name>destination</config-property-name>
              </required-config-property>
           </activationspec>
        </messagelistener>
     </messageadapter>
  </inbound-resourceadapter>

只有目标属性是必需的。在我的情况下,这个目标是远程的,因此我确实配置了一个JMSProviderLoader,它具有必要的JNDI属性,以及一个引用此JMSProviderLoader的连接工厂,两者都在我添加到部署的新[myprovidername] -ds.xml文件中。 我无法理解如果我只添加目标,MDB会知道它来自该特定的远程JMS提供程序,我确实看到ra.xml中的outbound-resourceadapter元素指定了以下内容:

<config-property>
   <description>The jndi name of the provider of connection factories</description>
   <config-property-name>JmsProviderAdapterJNDI</config-property-name>
   <config-property-type>java.lang.String</config-property-type>
   <config-property-value>java:DefaultJMSProvider</config-property-value>
</config-property>

但从传出一词来看,这不适用于入境流量。

总之,为了让MDB能够收听,我是否只需要目的地?如果是这样,如果我可以有多个具有相同目的地名称的提供者,它如何知道这是什么JMS提供者?

由于

1 个答案:

答案 0 :(得分:0)

魔法附带了在inbound-resourceadapter中配置的激活规范:

<activationspec-class>org.jboss.resource.adapter.jms.inflow.JmsActivationSpec</activationspec-class>

查看源代码显示,java:/ DefaultJMSProvider是硬件设置为 providerAdapterJNDI 的默认设置,因此这个是自动使用的,与为出站部件明确配置的相同。

因此,您只需要一个目标作为强制属性,因为其他所有内容在JmsActivationSpec中都有可行的默认值。

只要您将自己的JMSProviderLoader命名为&#34;默认&#34;你的* -ds.xml中的一个,一切正常:

<attribute name="ProviderName">DefaultJMSProvider</attribute>

否则,您必须在MDB的激活规范中明确设置相应属性。