2014-10-03 23 views
0

監聽遠程隊列的激活配置屬性我想了解在JBoss 5過程中部署MDB時真的需要什麼配置屬性來自設置在遠程JMS提供程序上的隊列中的消息。我打算使用ejb-jar.xml來配置激活規範,而且我不想只配置我真正需要的,而不是更多。我的理解是,規範允許的配置是在ra.xml中使用的。如果我認準的ra.xml從JMS-ra.rar,或許我可以看到下面的inbound-resourceadapter元素我真的需要MDB在JBoss 5中使用默認jms-ra.rar

<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> 

只有目標屬性是強制性的。在我的情況下,這個目的地是遠程的,因此我在一個新的[myprovidername] -ds.xml文件中添加了要部署的配置JMSProviderLoader以及必要的JNDI屬性以及一個引用此JMSProviderLoader的連接工廠。 我無法理解,如果我只添加一個目的地將在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提供者是來自哪裏,因爲我可以擁有多個具有相同目標名稱的提供者?

感謝

回答

0

神奇的配備了激活規範是在入站的ResourceAdapter配置:

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

展望來源顯示,該java的:/ DefaultJMSProvider已強制設置爲默認的providerAdapterJNDI,所以這個是自動使用的,與爲出站部分明確配置相同。

所以你只需要一個目的地作爲強制性的屬性,因爲所有其他的在JmsActivationSpec中都有一個可行的默認值。

只要你的名字你自己JMSProviderLoader是「默認」一個在你的* -ds.xml,一切工作正常:

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

否則,你就必須在明確設置根據你的屬性激活規範的MDB。