Java 2 Platform, Enterprise Edition (J2EE 平台) 是託管多層級和精簡型用戶端企業應用程式的標準伺服器平台規格。J2EE 平台的其中一個需求是,分散式元件能透過可靠的非同步訊息傳送而彼此互動。這樣的互動能透過 JMS 提供者而達成。事實上,Message Queue 即是 J2EE 平台的參照 JMS 實作。
本章說明在 J2EE 平台環境中實作 JMS 支援的結果。本章涵蓋下列主題:
如需有關將 Message Queue 用作 J2EE 相容應用程式伺服器之 JMS 提供者的其他資訊,請參閱「Sun Java System Message Queue 3.7 UR1 管理指南」中的第 17 章「JMS 資源介面特性參照」。
除第 2 章, 用戶端程式設計模型介紹的一般 JMS 用戶端程式設計模型之外,還有專用於 J2EE 平台應用程式環境的 JMS 用戶端改寫版本。此專用的用戶端稱為訊息驅動 Bean,是 EJB 2.0 (及更新版本) 規格 (http://java.sun.com/products/ejb/docs.html) 中所描述的 Enterprise JavaBeans (EJB) 元件系列之一。
訊息驅動 Bean 提供非同步訊息傳送;其他 EJB 元件 (階段作業 Bean 和實體 Bean) 僅可透過標準 EJB 介面同步呼叫。然而,企業應用程式經常需要非同步訊息傳送,讓伺服器端元件在不佔用伺服器資源的情況下互相通訊。任何應用程式的伺服器端元件只要必須回應應用程式事件,都需要 EJB 元件以接收和使用訊息,而不需要緊密耦合到訊息產生器。在企業應用程式中,此功能還必須能夠在負載不斷增加的情況下進行延伸。
訊息驅動 Bean (MDB) 是專用 EJB 容器 (為所支援的元件提供分散式服務) 支援的 EJB 元件。
JMS 訊息驅動 Bean 是實作 JMS MessageListener 介面的 EJB。在 MDB 容器接收訊息時,會呼叫 onMessage 方法 (由 MDB 開發者編寫)。onMessage() 方法使用該訊息的方式,與標準 MessageListener 物件的 onMessage() 方法一樣。您不能使用其他 EJB 元件上呼叫方法的方式,在 MDB 上遠端呼叫方法:因此不存在與其關聯的本機介面或遠端介面。MDB 可以使用來自單一目標的訊息。獨立式 JMS 應用程式、JMS 元件、EJB 元件或 Web 元件均可產生訊息,如圖 5–1 所示。
專用 EJB 容器支援 MDB。它會建立並設定 MDB 實例,以便非同步使用訊息。該容器會建立與訊息服務 (包括認證) 的連線、建立與指定目標相關聯的階段作業池,並管理階段作業池之間的訊息分發作業。由於容器控制 MDB 實例的生命週期,因此容器透過管理 MDB 實例池來容納內送訊息負載。
與 MDB 相關聯的是部署描述元,此描述元會於設定訊息使用時,為容器使用的連線工廠和目標設定屬性。部署描述元還可以包括部署工具用於配置容器所需的其他資訊。每個這類容器均支援單一 MDB 可以有多個實例。
在 J2EE 架構中,EJB 容器由 J2EE 應用程式伺服器託管。應用程式伺服器提供各種容器所需的資源:作業事件管理程式、永久性管理程式、名稱服務,以及用於訊息傳送和 MDB 的 JMS 提供者。
在 Sun Java System Application Server 中,JMS 訊息傳送資源由 Sun Java System Message Queue 提供:
對於 Sun Java System Application Server 7.0,Message Queue 訊息傳送系統已整合至應用程式伺服器,作為其原生 JMS 提供者。
對於 Sun J2EE 1.4 Application Server,Message Queue 已外掛至應用程式伺服器,作為內嵌的 JMS 資源介面。
對於未來新版的 Application Server,Message Queue 將使用標準的資源介面部署和配置方法,外掛至應用程式伺服器。
如需有關 J2EE 架構的資訊,請參閱 http://java.sun.com/j2ee/download.html#platformspec 上的 J2EE 平台規格。
資源介面是一種可將附加功能外掛至符合 J2EE 1.4 規格的應用程式伺服器中的標準方式。該標準是由 J2EE Connector Architecture (J2EECA) 1.5 規格所定義,允許應用程式伺服器以標準方式與外部系統進行互動。外部系統可包括企業資訊系統 (EIS),以及訊息傳送系統:例如 JMS 提供者。Message Queue 包括一個 JMS 資源介面,允許應用程式伺服器將 Message Queue 用作 JMS 提供者。
將 JMS 資源介面外卦至應用程式伺服器,可讓在應用程式伺服器中已部署並執行的 J2EE 元件交換 JMS 訊息。使用 J2EE 應用程式伺服器管理工具,可以建立並配置這些元件所需的 JMS 連線工廠與目標受管理物件。
但是,管理代理程式與實體目標之類的其他管理作業不包括在 J2EECA 規格中,這些作業只能透過各提供者的特定工具來執行。
Message Queue 資源介面整合在 Sun J2EE 1.4 應用程式伺服器中。但是,還未被任何其他 J2EE 1.4 應用程式伺服器認證過。
Message Queue 資源介面為單一檔案 (imqjmsra.rar),位於作業系統的某個目錄中,此目錄位置因作業系統而異 (請參閱「Sun Java System Message Queue 3.7 UR1 管理指南」中的第 17 章「JMS 資源介面特性參照」)。imqjmsra.rar 檔案包含資源介面部署描述元 (ra.xml),以及應用程式伺服器使用該介面所需的 JAR 檔案。
遵循應用程式伺服器隨附的資源介面部署與配置說明,您即可在任何 J2EE-1.4 相容應用程式伺服器中使用 Message Queue 資源介面。當 J2EE 1.4 應用程式伺服器上市銷售,並且已為這些應用程式伺服器認證 Message Queue 資源介面時,Message Queue 文件將提供有關部署與配置程序的具體資訊。