建立訊息驅動 Bean

您可以利用「建立 Enterprise Bean」精靈來建立 EJB 2.0 或 EJB 2.1 訊息驅動 Bean。

如果要建立訊息驅動 Bean,您必須先定義 EJB 2.0 或 EJB 2.1 專案。只支援 EJB 2.x 專案使用訊息驅動 Bean。

EJB 2.0 引進訊息驅動 Bean 來支援處理取自 Java 傳訊服務 (JMS) 的非同步訊息。EJB 2.1 規格擴充了訊息驅動 Bean 的定義,使它能夠支援任何傳訊系統,而不只是 JMS。 因此,EJB 2.1 規格也改變了用來定義訊息驅動 Bean 的部署描述子元素。建立 EJB 2.1 訊息驅動 Bean 的精靈也包括其他頁面,供您選擇性定義您的非 JMS 傳訊系統及其啟動配置元素。

下列程式碼範例說明用來定義訊息驅動 Bean 的 EJB 2.0 和 EJB 2.1 部署描述子元素之間的差異。

這個程式碼範例顯示部署描述子中的 EJB 2.0 訊息驅動 Bean 說明:
<message-driven id="Mdb20">
  <ejb-name>Mdb</ejb-name>
  <ejb-class>ejbs.MdbBean</ejb-class>
  <transaction-type>Bean</transaction-type>
  <message-selector>mdbMessage</message-selector>
  <acknowledge-mode>Auto-acknowledge</acknowledge-mode>
  <message-driven-destination>
    <destination-type>javax.jms.Topic</destination-type>
    <subscription-durability>Durable</subscription-durability>
  </message-driven-destination>
</message-driven>
這個程式碼範例顯示部署描述子中的 EJB 2.1 訊息驅動 Bean 說明:
<message-driven id="Mdb21">
  <ejb-name>Foo</ejb-name>
  <ejb-class>ejbs.FooBean</ejb-class>
  <messaging-type>javax.jms.MessageListener</messaging-type>
  <transaction-type>Bean/transaction-type>
  <message-destination-type>javax.jms.Topic</message-destination-type>
  <activation-config>
    <activation-config-property>
      <activation-config-property-name>destinationType</activation-config-property-name>
      <activation-config-property-value>javax.jms.Topic</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>subscriptionDurability</activation-config-property-name>
      <activation-config-property-value>Durable</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>acknowledgeMode</activation-config-property-name>
      <activation-config-property-value>AutoAcknowledge</activation-config-property-value>
    </activation-config-property>
    <activation-config-property>
      <activation-config-property-name>messageSelector</activation-config-property-name>
      <activation-config-property-value>fooSelector</activation-config-property-value>
    </activation-config-property>
  </activation-config>
  </transaction-type>
</ejb-name>
</message-driven>

在 EJB 2.1 中,規格定義了用來定義確認模式、訊息選取器、訂閱延續性和目的地類型等內容的 <activation-config-property> 元素。當您使用非 JMS 傳訊類型時,精靈可讓您定義 Bean 所需使用的 <activation-config-property> 名稱/值配對。 如果是 JMS 傳訊系統,精靈會提供 JMS 所需要的預設配置內容,如 subscriptionDurabilityacknowledgeMode

如果要建立 EJB 2.0 或 EJB 2.1 訊息驅動 Bean,請執行下列動作:

  1. 在 J2EE 視景中,按一下檔案 > 新建 > Enterprise Bean。 這時會出現「建立 Enterprise Bean」精靈。
  2. 選取訊息驅動 Bean 圓鈕。
  3. 選取您要新增 Bean 的 EJB 專案。您可以選擇 EJB 2.0 或 EJB 2.1 專案。
  4. Bean 名稱欄位中,輸入您要指派給 Enterprise Bean 的名稱。依照慣例,Bean 名稱開頭應該是大寫字母。
    註: 您可以利用 Unicode 字元來作為 Bean 名稱,但 Enterprise Bean 所關聯的 Enterprise Bean 套件和類別沒有 Unicode 字元的支援。
  5. 來源資料夾欄位中,選取新 Bean 的來源資料夾。
  6. 預設套件欄位中,輸入新 Bean 的套件名稱。
  7. 選擇性的: 如果是 EJB 2.x Bean,您可以選取產生含註解的 Bean 類別 如果您選取這個選項,精靈會在 Bean 類別的 Java™ 程式碼開頭產生註釋。這些註釋會依照精靈所指定來定義 Bean 的實作。 之後,EJB 工具會利用這些註釋來產生必要的 Bean 類別,以及提供插入 EJB 部署描述子 (ejb-jar.xml) 的值。如果您熟悉註釋,且想要利用註釋而不是部署描述子來更新 Bean,請選取這個選項。

    如果需要詳細資訊,請參閱註釋型程式設計概觀

  8. 下一步
  9. 如果是 EJB 2.1 Bean,請指定訊息驅動 Bean 所用的傳訊服務,再按下一步
    • JMS 類型:如果您要使用 JMS 傳訊服務,請利用 javax.jms.MessageListener 類別作為接聽器類型來選取這個選項。
    • 其他類型:如果您要使用非 JMS 或自訂傳訊服務,請選取這個選項。 請在接聽器類型欄位中,輸入接聽器類別的完整名稱。
  10. 指定訊息驅動 Bean 的詳細資料。 如果您正在建立使用非 JMS 傳訊系統的 EJB 2.1 訊息驅動 Bean,部分選項無法使用,但您可以將它們手動定義成啟動配置名稱/值配對:
    • 交易類型:您可以指定由儲存器或 Bean 來管理 Bean 的交易。
    • 目的地類型:您可以將佇列或主題指定成訊息驅動 Bean 的訊息目的地。
    • 啟動配置:如果是使用非 JMS 傳訊類型的 EJB 2.1 訊息驅動 Bean,請利用這份表格來配置其他內容。 您定義的每個名稱/值配對都會新增至部署描述子中,成為 <activation-config-property> 元素。
    • 確認模式:如果是使用 JMS 類型傳訊及 Bean 管理交易的 Bean,您可以指定階段作業要如何確認它收到的任何訊息。
    • 延續性:如果是使用 JMS 類型傳訊且訊息目的地類型是主題的 Bean,您可以指定主題訂閱可延續或不可延續:
      • 可延續:訂閱者會用 JMS 所保留的專屬身分來登錄一項可延續的訂閱。 在先前的訂閱者留下訂閱狀態中,有相同身分的後續訂閱者物件會回復這項訂閱。 如果可延續訂閱沒有作用中的訂閱者,JMS 會保留訂閱訊息,直到訂閱收到這些訊息或訊息到期為止。
      • 不可延續:訂閱會在其訂閱者物件的生命期限內持續存在。 這表示只有在訂閱者作用中,用戶端才會見到主題的發佈訊息。如果訂閱者不在作用中,用戶端就會遺漏主題的發佈訊息。
    • Bean 超類型:如果您要新 Bean 繼承相同 EJB 專案中相同類型的現有的 Bean,請在下拉清單中選取一個 Bean。
    • Bean 類別:請輸入 Bean 類別所需要的套件和類別名稱。依預設,精靈會根據您定義的 Bean 名稱和預設套件來建議一個 Bean 類別。Bean 類別可以是精靈所產生的新類別,也可以是專案類別路徑中的現有類別。請按一下類別按鈕來開啟對話框,其會列出專案中對應於 Bean 類型的類別。針對具有程式碼的現有類別,Bean 類別的名稱會以藍色顯示。針對現有的二進位類別,Bean 類別的名稱會以紅色顯示。
    • 訊息選取器:如果是使用 JMS 類型傳訊的 Bean,便會利用 JMS 訊息選取器來決定訊息 Bean 接收哪些訊息。
  11. 選擇性的: 下一步,在 Bean Super 類別欄位中,輸入或選取所需要的類別。如果指定了 Bean 超類型,就會停用這個欄位。
  12. 按一下完成 這時會產生新 Bean,且會定義在部署描述子中。
您可以利用 EJB 部署描述子編輯器的 Bean 頁面來檢視 Bean 以及變更或新增任何其他設定或延伸和連結。
使用條款 | 讀者意見
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.