2009-10-28 56 views
2

我正在使用帶有很多MDB的Weblogic 9.2。這些MDB訪問JDBC DataSources並分別使用本地和外部XAConnectionFactorys寫入本地和外部管理的JMS目標。每個MDB都劃定一個容器管理的JTA事務,該事務應該在所有這些資源中分配。使用EJB 2.1時,是否聲明瞭對ejb-jar.xml中資源的引用?

下面是MDB的ejb-jar.xml摘錄,它從本地隊列中調用「MyDestination」,並生成一個名爲「MyOtherDestination」的IBM Websphere MQ Queue。這些邏輯名稱鏈接到我的weblogic-ejb-jar.xml文件中的物理對象。

就是用<資源引用>和<消息目的地裁判>標籤,露出連接工廠和隊列的MDB需要它?如果是這樣,Weblogic需要它還是J2EE規範所要求的?爲了什麼目的?例如,是否需要支持XA事務性?

我已經意識到使用暴露給MDB命名上下文的名稱將管理對象與MDB解耦的好處。這是指定這些標籤時唯一添加的值嗎?換句話說,是否可以使用InitialContext和對象的完全限定名從我的MDB中引用這些對象?

<enterprise-bean> 
    <message-driven> 
     <ejb-name>MyMDB</ejb-name> 
     <ejb-class>com.mycompany.MyMessageDrivenBean</ejb-class> 
     <transaction-type>Container</transaction-type> 
     <message-destination-type>javax.jms.Queue</message-destination> 
     <message-destination-link>MyDestination</message-destination-link> 
     <resource-ref> 
      <res-ref-name>jms/myQCF</res-ref-name> 
      <res-type>javax.jms.XAConnectionFactory</res-type> 
      <res-auth>Container</res-auth> 
     </resource-ref> 
     <message-destination-ref> 
      <message-destination-ref-name>jms/myOtherDestination</message-destination-ref-name> 
      <message-destination-type>javax.jms.Queue</message-destination-type> 
      <message-destination-usage>Produces</message-destination-usage> 
      <message-destination-link>MyOtherDestination</message-destination-link> 
     </message-destination-ref> 
    </message-driven> 
<enterprise-bean> 
+0

你試過了嗎? – skaffman 2009-10-28 14:13:36

+0

我澄清了我的問題。我對它是否可以工作不感興趣。我想知道爲什麼會這樣或那樣做。 – adgoudz 2009-10-28 15:39:43

回答

2

我倒在的Weblogic/J2EE文檔一天,發佈上述問題,那麼預期我立即在我一直在尋找的文件來了。

最低限度我需要爲了爭取在JTA事務及其連接聲明遠程連接工廠一個<資源引用>(在我的情況下,IBM的Websphere MQ)。

爲了保持一致性,添加了遠程目標的相應的< message-destination-ref >,並且Weblogic透視圖中沒有實際的增值。另外,在指定對本地管理的目標,ConnectionFactorys和Datasources的引用時,不會有任何增值。

從Weblogic的FAQs: Integrating Remote JMS Providers

問:JMS資源 引用提供什麼樣的優勢?

A. JMS資源引用提供 以下優點:

  • 他們確保的servlet和EJB應用程序的可移植性:它們可以被用來 改變應用程序的JMS 資源而無需重新編譯 應用程序的源代碼。
  • 它們提供JMS Connection,Session和 MessageProducer對象的自動池。
  • 他們提供非WebLogic JMS 供應商的自動事務登記。這需要JAX提供者在 中提供XA支持。如果不使用資源 引用,那麼使用 當前事務處理的非WebLogic JMS提供程序需要額外的 編程步驟。

的此功能的細節在Enhanced J2EE Support for Using WebLogic JMS With EJBs and Servlets中描述。