GlassFish v2: 明智選擇

對於許多公司及其內部開發人員來說,開源軟件的吸引力正在與日俱增。這是因爲社區可以免費獲得和升級開源軟件的源碼。這意味着這種軟件比專用軟件擁 有更快的更新速度,並且其升級通常也與公司及其開發人員的需求相吻合。還有它的低成本(開源軟件通常是免費的)並沒有任何負面影響。所有這些都將轉換爲巨 額的利潤和不斷增加的佔用率。

然而,公司並不信任使用開源軟件來管理它們的業務關鍵型應用程序或處理高負荷、高事務的環境。這是因爲開源軟件往往不提供支持,並且有時提供的性 能、可靠性和易操作性都不如專用軟件。特別是當遇到類似應用服務器的關鍵企業組件時,IT 決策者傾向於將開源軟件委託給利基 (niche) 應用程序或低風險應用程序。

 
公司再也不必在開源應用服務器和健壯的、可靠的、企業級就緒應用服務器二者之間作出選擇。他們可以使用 GlassFish v2 來同時兼顧二者。

但是自 GlassFish v2 發行之後,公司現在已經有了開源的應用服務器,並具有處理業務關鍵應用程序所需的特徵以及生產環境的嚴格性。公司再也不必在開源應用服務器和健壯的、可靠的、企業級就緒應用服務器二者之間作出選擇。他們可以使用 GlassFish v2 來同時兼顧二者。

本文着重介紹使 GlassFish v2 成爲處理關鍵業務應用程序的明智選擇以及成爲生產環境的需求的功能。

目錄


目錄

 

什麼是 GlassFish?
GlassFish v2 及其商業發行版
高可用性和可伸縮性
企業級性能
集中管理和監控
使用配置文件實現簡單一步配置
與 .NET 的互操作性
JBI 就緒
高級消息處理
具有吸引力的支持報價
結束語
更多信息
關於作者

 

什麼是 GlassFish?
GlassFish 社區

2005 年 6 月,Sun 啓動了 GlassFish 項目 —— 開發一個與 Java Platform, Enterprise Edition 5 (Java EE 5) 兼容的應用服務器,並向 Java 社區公開。此後,一個名爲 GlassFish 社區 的活躍的開發人員社區參與了此項目。他們努力的最初結果是 GlassFish v1(第一個開源的、與 Java EE 5 兼容的應用服務器),以及 Java EE 5. 的參考實現。另外,GlassFish 社區還發布了 Toplink Essentials,即 Java Persistence API 的參考實現。此社區還培養了許多不同的子項目,比如 MetrojMakiOpen Message Queue (Open MQ)HudsonGrizzly

 
GlassFish v2 包括 GlassFish v1 的所有功能,並添加了其他功能,使得應用服務器能夠接受重型生產環境的挑戰。

GlassFish v1 的重點是開發人員。目的是提供一個開源並與 Java EE 5 完全兼容的應用服務器,開發人員可以使用此服務器部署並測試其 Java EE 5 應用程序。遠景是簡單部署,也就是對單個 GlassFish 實例的應用程序部署。在 Common Development and Distribution License (CDDL) 下可用的 GlassFish v1 已經非常流行,每年的下載量都超過 3 百萬。它已被全世界採納並在多個發行版中可用,其中包括支持 Sun 的商業發行版 Sun Java System Application Server Platform Edition 9.0。它還在多個平臺上可用,其中包括 Solaris、Windows 和 Linux 操作系統。

2007 年 9 月,GlassFish 社區發佈 GlassFish v2,其中包括 GlassFish v1 的所有功能,並添加了其他功能,使得應用服務器能夠接受重型生產環境的挑戰。本文概述了這些功能。

GlassFish v2 及其商業發行版
SunJava 系統應用服務器

正如前文所述,GlassFish v1 有一個支持 Sun 的商業發行版。GlassFish v2 也是如此。GlassFish v2 的支持 Sun 的商業發行版是 Sun Java System Application Server 9.1. GlassFish v2 和 Sun Java System Application Server 9.1 有相同的代碼基礎。另外,可以從 Sun 購買 Sun Java System Application Server 9.1 的支持服務。有關支持服務的更多信息,請參閱 具有吸引力的支持報價 一節。

可 以免費部署並重新分佈 GlassFish v2 和 Sun Java System Application Server 9.1。然而,和 GlassFish v2 不同的是,您不可以修改 Sun Java System Application Server 9.1 —— 它的代碼只能以二進制格式獲取。GlassFish v2 資源代碼可以使用 Classpath 異常CDDLGNU General Public License (GPL) v2 下修改。

多數情況下,本文使用 GlassFish v2 術語來涵蓋開源應用服務器、GlassFish v2 及其商業發行版 Sun Java System Application Server 9.1。少數情況下,討論的內容涉及兩個發行版的不同之處時,本文將特指 GlassFish v2Sun Java System Application Server 9.1

高可用性和可伸縮性

如果應用服務器將要處理關鍵業務應用程序,則必須確保那些應用程序是高可用性的。爲了滿足生產環境需求,應用服務器必須擴展以滿足增加的工作量。 GlassFish v2 通過集羣和 High-Availability Database (HADB) 技術來確保高可用性和可擴展性。

集羣

集羣 是一組 GlassFish v2 應用服務器實例,您可以將其作爲單個邏輯實體進行管理和監控。要創建一個集羣,必須首先啓用 GlassFish v2 域進行集羣。GlassFish v2 ,或更精確地說是 管理域, 是一個邏輯邊界,其中所有的 GlassFish v2 實體都由管理員控制。在運行時,一個域相當於一個 GlassFish v2 應用服務器實例或一個集羣。安裝 GlassFish v2 時,可以很容易地爲域啓用集羣。例如,安裝了 GlassFish v2 之後,可以使用下列命令來創建一個域併爲其啓用集羣:

lib/ant/bin/ant -f setup-cluster.xml

 

還可以從 GlassFish v2 Admin Console 中爲現有域啓用集羣,這將在下文介紹。

通過啓用域進行集羣,則爲域指定一個集羣配置文件。有關配置文件的詳細信息,請參閱 使用配置文件實現簡單一步配置 一節。然後,可以靈活地從域中創建或移除集羣,並從指定集羣中添加或移除 GlassFish v2 實例。通過將實例添加到集羣中或在域內添加集羣,可以進行擴展以滿足增加的應用服務器容量和速度的需求。有關管理和監控集羣的更多信息,請參閱 集中管理和監控

 
如果集羣中的一個應用服務器實例失敗了,與此實例交互的會話將會被重新發送給集羣中的另一個實例,以便其可以處理此會話。

也許集羣最重要的方面是 內存複製。在內存複製中,GlassFish v2 實例中有關已部署應用程序的用戶會話狀態的信息被複制到集羣中的一個對等實例中。集羣中的每個 GlassFish v2 實例都將會話狀態信息發送到集羣中的下一個實例中,即它的 複製夥伴。集羣中實例的順序基於實例的名稱。當已部署應用程序的會話狀態信息在任何實例中更新時,它將被複制到整個集羣中。

在內存複製中扮演重要角色的是 負載均衡器,它可用作 GlassFish v2 的插件。負載均衡器服負責在多個 GlassFish v2 實例之間分配工作量。當一個實例失敗時,它還參與重新發送會話。如果集羣中的 GlassFish v2 實例失敗了,負載均衡器會將與此實例交互的會話重新發送給集羣中的另一個實例。

處理集羣中的故障轉移
圖 1. 處理集羣中的故障轉移
 

圖 1 所示,如果 Instance 1 失敗了,負載均衡器將與 Instance 1 交互的會話發送給另一個實例,即圖中的 Instance 2。如果接收會話的實例是失敗的 GlassFish v2 實例的複製夥伴,那麼將在此處理會話。但是如果接收會話的實例不是複製夥伴,那麼複製夥伴會將複製的會話數據傳輸給接收會話的實例。

換句話說,如果負載均衡器將會話發送給 Instance 3(不是複製夥伴),則複製夥伴 Instance 2 會將狀態數據發送給 Instance 3 以處理會話。

通過內存複製,GlassFish v2 使得已部署的應用程序具有高可用性。用戶應該很少注意到與這些應用程序交互中的中斷(如果存在的話)。

可以通過將集羣實例及其複製夥伴放置在不同的計算機上來進一步提高可用性。這樣的話,即使其中一臺計算機失敗了,會話數據也不會丟失。

高可用性數據庫(High-Availability Database,HADB)技術

需要非常高級的可用性的企業可以利用 High-Availability Database (HADB) 技術,一種在 Sun Java System Application Server 以前的版本和版本 9.1 中可用的功能。HADB 提供了 99.999%(“五個九”)的可用性,併爲維護會話狀態信息提供了一個永久數據庫。HADB 不是開源,但在生產中是免費使用的。

然而要注意的是,通過 GlassFish v2 集羣功能提供的健壯的內存複製應該滿足大部分安裝的高可用性需求。另外,內存複製比 HADB 需要的安裝設置和管理控制要少,而且它還是開源。除此之外,內存複製利用了大量性能優化來超過 HADB。然而,如果您具有當前使用 HADB 的操作,或需要五個九的可用性,那麼您可以選擇使用 HADB 的 Sun Java System Application Server 9.1。

有關集羣及 HADB 的詳細信息,請參閱 GlassFish Version 2 中的集羣

企業級性能
企業級性能

不論擴展多少,您都希望應用服務器表現良好。希望它能夠以出色的吞吐量和響應時間來處理其處理負載。GlassFish v2 滿足這些目標。事實上,在 GlassFish v1 的商業版本中,Sun Java System Application Server 9.0 是第一個發佈了 SPECjAppServer2004 基準結果 的開源應用服務器。SPECjAppServer20041 是端對端的應用程序,它使用了由兼容應用服務器實現的所有主要的 Java EE 技術,其方式反映了企業環境中典型的應用程序複雜性和大規模事務處理。

 
GlassFish v2 是最快的開源應用服務器,其性能勝過市場領先的專用應用服務器。

GlassFish v2 是最快的開源應用服務器,其性能勝過市場領先的專用應用服務器。2007 年 7 月,GlassFish v2 以 20% 擊敗競爭者時發佈了 單個 Sun Fire T2000 服務器在 SPECjAppServer 上的歷史最高分 2

最近,爲 GlassFish v2 發佈了可擴展的結果,即 在此基準上發佈的第三高分.3。此結果在曾經發布的最好結果的 20% 範圍之內,儘管它比產生競爭結果的基準使用了較少的硬件、空間和電源。

請注意,應用服務器的性能取決於所運行的應用程序集合。您的結果可能與 SPECjAppServer2004 基準中的結果不同。

在 GlassFish v2 中已經獲得顯著性能提升的一個領域是 web 服務技術。GlassFish v2 中的 web 服務技術集合稱爲 Metro。Metro 包括核心 web 服務技術,比如 Java API for XML-Based Web Services (JAX-WS) 2.1 和支持 Java EE 與 Windows .NET 環境之間的 web 服務交互性 的技術。與夥伴技術 Java Architecture for XML Binding (JAXB) 合作的 JAX-WS 2.1,已經在嚴格的 web 服務基準 下進行了測試,在每秒處理的請求數方面顯示出傑出的性能結果。

有關 GlassFish v2 性能的詳細信息,請查閱 SJSAS 9.1 (Glassfish V2) Posts New SPECjAppServer 2004 ResultA Scalable SPECjAppServer 2004 Submission

集中管理和監控
 
Admin Console 爲您提供了對企業中 GlassFish 實例和集羣進行控制的中心點。

您可以在單一的 GlassFish v2 Admin Console(官方稱爲 Sun Java System Application Server Admin Console)中或從 GlassFish v2 命令行界面 (CLI) 中管理並監控 GlassFish v2 實例或集羣。這樣做不僅爲您提供對企業中 GlassFish 實例進行控制的中心點,還允許您獨立地管理並監控每一個集羣。

易用的 Admin Console

Admin Console 的重要方面之一是它的易用性。登錄 Admin Console 時您會注意到這一點。顯示的第一個頁面是集合了常用操作任務的 Common Tasks 頁面。圖 2 顯示了啓用了集羣的域的 Common Tasks 頁面。

啓用了集羣的域的 Common Tasks 頁面
圖 2. 啓用了集羣的域的 Common Tasks 頁面
單擊查看大圖。

 

注意,顯示的按鈕是用來執行一些任務的,比如創建新的集羣、部署企業應用程序以及監控數據。導航樹對這些按鈕作出補充,爲您提供備選路徑以執行管理 任務。要啓動一個操作任務,只要在此頁面單擊適當的按鈕或在單擊樹中的一個節點即可。例如,要在啓用了集羣的域中創建集羣,可以通過單擊此頁面中的 Create New Cluster 按鈕或單擊導航樹中的 Clusters 節點開始。

還要注意,管理任務的支持文檔在 Common Tasks 頁面中直接可用。這些文檔是 Sun Microsystems Documentation 頁面 中可用的參考文檔的擴展庫的一部分。

Common Tasks 頁面以及 Admin Console 的許多其他元素是動態的。這些元素是在 Project Woodstock 中開發的下一代用戶界面組件集的一部分,它利用 Ajax 功能提供了對輸入的快速響應和顯示之間的平滑過渡。

綜合監控

Admin Console 還使得監控大範圍的應用服務器相關數據更容易。在 Common Tasks 頁面上單擊 View Monitoring Data 按鈕就會顯示一個選項卡頁面,其中每個選項卡會提供有關應用服務器或其操作環境的不同方面的數據。例如,Call Flow 選項卡顯示調用流數據 如 圖 3 所示。

監控調用流
圖 3. 監控調用流
單擊查看大圖。

 

通過監控給定事務的調用流,可以跟蹤穿越不同應用服務器容器的事務,如 圖 4 所示。

事務的調用流詳細信息
圖 4. 事務的調用流詳細信息
單擊查看大圖。

 

GlassFish v2 啓用了 Java Management Extensions (JMX) 技術。這意味着,如果您已經使用 JMX 來監控和管理企業中的資源,那麼您也可以很容易地將此方法運用於管理和監控 GlassFish v2 資源。您還可以將 GlassFish v2 合併到通過 Sun Management Center 和 Halcyon 的 PrimeAlert for Sun Application Server 實現的端對端的管理和監控方法中。

智能命令行界面 (CLI)

還可以通過 CLI 來執行與 GlassFish v2 相關的一套完整的管理任務。一般來說,可以通過 Admin Console 或通過 CLI 來執行幾乎任何一個與 GlassFish v2 相關的管理任務。例如,可以使用 CLI 來啓動和停止 GlassFish v2 域,創建集羣,打開或關閉調用流數據的收集。CLI 還有一個“最佳匹配”功能,如果您在輸入命令時出現錯誤,那麼它會建議備選輸入。例如,如果在 asadmin 命令中錯誤鍵入關鍵字 domain,如下所示:

asadmin start-domian

 

CLI 建議備選輸入:

Closest matching command(s):
asadmin start-domain

 

管理大規模部署

GlassFish v2 提供的 Admin Console 和 CLI 是部署和配置單個實例或集羣的極好工具。對於大規模企業部署,可以使用 Sun N1 Service Provisioning System (N1SPS)。Sun Java System Application Server 的 N1SPS 插件使得在整個企業中安裝、配置和管理 Sun Java System Application Server 9.1 安裝更爲容易。還可以使用此插件來配置和管理現有的 GlassFish v2 安裝,但是不可用於安裝。有關 N1SPS 的詳細信息,請參閱 Provisioning Sun Java System Application Server With N1SPS

有關 Admin Console in GlassFish v2 的詳細信息,請參閱 GlassFish Project - Admin Console (GUI) 主頁。有關 GlassFish v2 中監控功能的信息,請參閱 GlassFish Version 2 Monitoring Capabilities

使用配置文件實現簡單一步配置
簡單一步配置

優化是應用服務器的一個重要需求,但是使用每一個服務器可能需要不同種類的優化。例如,要構建和測試應用程序的開發人員可能對優化應用服務器響應應 用程序請求的速度特別感興趣,但是對安全性則不太感興趣。比較而言,在生產環境中安全性是非常重要的,因此它成爲人們部署應用程序的主要集點。

 
創建應用服務器域時,可以僅通過指定適當的配置文件來配置和優化 GlassFish v2 以用於特定類型的用途。

可以通過設置配置參數來手動調優應用服務器以滿足特定需求,但是這可能需要花費大量的時間和精力。或者可以使用爲特定類型的用途預配置的應用服務器 的特定版本。事實上,Sun Java System Application Server 的前一個發佈有不同的可用版本。例如,Platform Edition 是爲開發人員設計的,而 Enterprise Edition 是爲大型企業設計的。然而,爲不同用途而安裝並管理應用服務器的多個版本可能很難操作。

更好的解決方案是提供單個應用服務器版本,但也爲特定的使用模式提供預置配置。事實上,這是 GlassFish v2 的發佈方式。它可用於一個大小適宜的發行版捆,並且它支持不同的使用配置文件。每一個配置文件都爲特定的使用類型預置配置參數。GlassFish v2 支持三個配置文件:開發人員、集羣和企業。

開發人員配置文件優化在開發環境中使用的 GlassFish v2。這意味着配置參數支持快速啓動等目標,但不支持登錄或會話複製等目標。集羣配置文件設置啓用集羣創建和會話複製的配置參數。企業配置文件優化生產環 境的 GlassFish v2。它支持登錄以及其他與安全相關的功能。

表 1 概述三個配置文件的一些特徵。

表 1:GlassFish v2 配置文件的特徵和設置
 
特徵
描述
開發人員配置文件中的值
集羣配置文件中的值
企業配置文件中的值
安全存儲
用 於安全工件(比如密鑰和證書)的存儲類型。有兩個主要的存儲類型:JKS (Java Key Store),由 Sun 提供的專有類型的密鑰庫實現,NSS (Network Security Services),設計用於支持啓用安全性的客戶機和服務器應用程序的跨平臺開發的一組庫。存儲類型在格式和可以對其進行配置的工具方面是不同的。 NSS 通常是企業解決方案的首選安全存儲類型。
JKS
JKS
NSS
快速啓動
支持應用服務器快速啓動的選項。快速啓動通過基於 Java-NIO 的實現來完成,此實現是按需服務框架的一部分。
真(啓用)
假(禁用)
假(禁用)
JVM
Java Virtual Machine 配置參數。
Hotspot VM 配置參數
Hotspot VM 配置參數
由 JDK 確定
會話複製機制
標識會話複製機制的選項。
內存複製
HADB

 

當創建域時指定配置文件。例如,下列命令創建域並指定此域的企業配置文件。


asadmin create-domain --user admin --adminport 4848 --profile enterprise dev-domain

 

您只需要爲特定類型的用途(此處是生產環境)配置和優化 GlassFish v2 應用服務器實例。

有關配置文件的詳細信息,請查閱 One Pager: Usage Profile Support for Application Server

與 .NET 的互操作性

互操作性是企業中的一個重要需求。這是因爲企業的應用程序資源通常分佈在一定範圍的操作環境中。例如,應用程序的客戶機部分可能位於一個環境中(比 如 Java EE),而它需要的 web 服務可能位於另一個環境中(比如 Microsoft 的 .NET 框架)。GlassFish v2 支持基於 web 服務的應用程序在 Java EE 和 .NET 環境之間互操作。

Metro 和 Web Services 的互操作性
 
通過支持安全可靠的消息傳送和事務,GlassFish v2 支持基於 web 服務的應用程序在 Java EE 和 .NET 環境之間互操作。

如前文所述,GlassFish v2 包括 Metro, 它提供一組健壯的 web 服務技術。然而,Metro 有不止一堆運行於 Java EE 中的 web 服務技術。Metro 還支持 web 服務與 Windows Communication Foundation (WCF) 互操作,其中 WCF 是 Microsoft 的 .NET 框架中的 web 服務堆。Metro 和 WCF 實現了一套 web 服務規範,通常稱爲 WS* 規範 —— 均以“WS”開頭 —— 它支持安全、可靠和麪向事務的 web 服務交互。Metro 中 WS* 規範的實現被稱爲 Web Services Interoperability Technology (WSIT)。如 圖 5 所示,WSIT 支持 GlassFish v2 中的 web 服務客戶機與 .NET 3.0 中的 web 服務端點交互,還支持 .NET 3.0 中的 web 服務客戶機與 GlassFish v2 中的 web 服務端點交互。還支持 GlassFish v2 客戶機與 GlassFish v2 端點通信。

Metro 與 .NET 的互操作性
圖 5. Metro 與 .NET 的互操作性

 

因爲 Metro 和 WCF 支持安全、可靠和麪向事務的 web 服務交互,web 服務客戶機可以請求它與 web 服務的交互是安全的,交互被安全接收,或這些交互就像可以提交或回滾的事務一樣被處理,還可以是這些要求的任意組合。

用於配置 Web 服務互操作性的簡單界面

GlassFish v2 中 web 服務端點的交互性特徵在名爲 WSIT 配置文件的 XML 文件中指定。web 服務開發人員可以在文件中編碼所需的 XML。然而,XML 可能十分繁瑣,且 WSIT 配置文件的內容十分冗長。開發互操作的 web 服務的更簡單的方法是使用 NetBeans IDE 版本 5.5.1 或 6.0。要爲 WSIT 啓用 NetBeans IDE 5.5.1,請安裝 WSIT 插件模塊。此插件模塊已在 NetBeans IDE 6.0. 中打包。一旦啓用,IDE 會呈現一個簡單的複選框界面,可用於配置具有 WSIT 特徵的 web 服務,比如安全消息、可靠消息和事務支持。圖 6 是在 NetBeans IDE 6.0. 中顯示的此界面。

爲互操作的 Web 服務指定可靠的消息傳遞
圖 6. 爲互操作的 web 服務指定可靠的消息傳遞
單擊查看大圖。

 

注意,在圖 6 中選中了 Reliable Message Delivery 和 Deliver Messages In Exact Order 複選框。選中這些複選框之後,就允許 web 服務進行可靠的消息傳遞,並確保由客戶機發送的消息以發送時的正確順序被傳遞到 web 服務端點。

然後可以使用 NetBeans IDE 在 GlassFish v2 上部署 web 服務。在這個過程中,IDE 爲配置選擇生成適當的工件,包括配置文件以及所有適當的 XML 代碼。

考慮在 Java EE 平臺和 .NET 框架之間實現 web 服務互操作性的時間、困難和成本。要做到這一點,通常需要大量的自定義代碼以及一些昂貴的消息傳送基礎設施。使用 Metro,可以無代價地獲得此支持 —— 它已被構建到 GlassFish v2 中。

有關 Metro 對 web 服務與 .NET 互操作性的支持的詳細信息,請參閱 Project Tango: An Overview (PDF) 和 Metro Project

JBI 就緒
Open ESB

GlassFish v2 有對 Open ESB 的內置支持,即 Java Business Integration (JBI) 的實現。由 JSR 208 指定的 JBI 是一個 Java 標準,用於按照面向服務的體系結構 (SOA) 構造業務系統。在 SOA 方法中,應用程序可以在不同的服務中組裝,其中每個服務執行一個或多個與業務相關的進程。在構建這些合成應用程序時,SOA 爲企業提供了許多敏捷性,因爲在一個應用程序中使用的服務和數據可以被其他應用程序共享和重用。類似這種用集成服務和數據來生成新的應用程序的方法通常被 稱爲集成應用程序系統。過去,實現集成應用程序系統需要使用許多自定義代碼或需要在專用系統上投資。JBI 標準化了構造集成應用程序系統的方法,並消除了專門編碼或專用解決方案的需要。

JBI 爲插件組件定義環境,在此環境中,每一個插件組件都提供一定的技術來運行特定的服務類型、更改服務的運行順序或執行其他與業務進程相關的任務,比如轉換數 據格式。例如,一個 JBI 組件可能是一個 EJB 服務引擎,用於運行部署爲 Java EE 企業存檔 (EAR) 文件的服務。另一個組件可能是一個運行 SQL 查詢的 SQL 服務引擎。第三個組件可能是一種業務進程執行語言 (Business Process Execution Language, BPEL) 服務引擎,此服務引擎運行更改業務進程順序的 BPEL 語句。一些插件組件是與其他環境通信以提供或使用服務的綁定組件。例如,一個綁定組件可以使用 SOAP over HTTP 來運行一個遠程服務以執行信用檢查。另一個綁定組件可以使用 SMTP 來發送有關信用檢查的電子郵件通知。

這種思想旨在於爲組成基於 JBI 系統的組件提供許多靈活性,並在可以合併到合成應用程序中的服務類型上爲企業提供範圍廣泛的選擇。作爲 JBI 的實現,Open ESB 允許將服務集成到鬆散耦合的合成應用程序中。

 
GlassFish v2 爲 Open ESB 提供運行時環境。GlassFish v2 提供了運行特定類型服務的大量服務引擎,以及與其他環境通信以提供或使用服務的綁定組件。
Open ESB 運行時環境

GlassFish v2 爲 Open ESB 提供運行時環境。GlassFish v2 提供大量服務引擎和綁定組件。因爲 Open ESB 是基於 JBI 的,所以可以將與 JBI 兼容的服務引擎和綁定組件添加到 GlassFish v2 所提供的項目中。

圖 7 所示,在 GlassFish v2 應用服務器中部署的 web 服務通過 JAX-WS 和名爲 Sun Java EE Engine 的組件與 JBI 運行時環境進行通信。其他 JBI 組件也是如此,Sun Java EE Engine 使用名爲 Normalized Message Router (NMR) 的輕量級消息框架來同其他服務引擎和綁定組件通信。注意,在圖 7 中 SE 代表服務引擎,BC 代表綁定組件。

GlassFish v2 中的 JBI 運行時環境
圖 7. GlassFish v2 中的 JBI 運行時環境

 

管理 Open ESB 組件

可以使用 Admin Console 或 CLI 來管理 Sun Java EE Engine 以及 GlassFish v2 中的其他 Open ESB 組件。例如,通過在 Common Tasks 頁面中單擊 Deploy Java Business Integration (JBI) Service Assembly 按鈕,就可以使用 Admin Console 來部署一個 JBI 服務程序集,其中包含部分或全部合成應用程序。可以在 Admin Console 或 CLI 中啓動、停止、關閉或卸載 Sun Java EE Engine。例如,可以通過在 CLI 中輸入下列命令來啓動 Sun Java EE Engine:

asadmin start-domian

 

用於構建合成應用程序的工具

在開發端,NetBeans IDE 6.0 提供了大量工具來構建在 Open ESB 環境中運行的合成應用程序。這些工具包括 BPEL 設計工具、圖形化 Web Services Description Language (WSDL) 編輯器、Composite Application Service Assembly (CASA) 編輯器以及用於管理模式和 XSLT 轉換的工具。

使用 NetBeans IDE 6.0 來構建合成應用程序。然後在 GlassFish v2 中部署、運行並管理這些應用程序。

有關 GlassFish v2 中 Open ESB 支持的詳細信息,請參閱 Sun Java EE Engine: Bridging Java EE Web Services and JBI ComponentsOpen ESB Project

高級消息處理
Open ESB

在連接業務軟件以建立高效的企業時,有效的消息服務器至關重要。GlassFish v2 提供了 Open Message Queue (Open MQ),它是面向消息的系統集成的一個完整的 Java Message Service (JMS) 實現。JMS 是一個消息標準,它允許基於 Java EE 的應用程序組件創建、發送、接收和讀取消息。實現 JMS 時,Open MQ 提供一個功能完全的消息服務器,Open MQ 是 Sun Java System Message Queue 產品的開源版本。Open MQ 可以獨立運行 —— 它有自己的一套管理工具,也可以完全集成到 GlassFish v2 中。

 
GlassFish v2 提供了 Open MQ,它是面向消息的系統集成的一個完整的 Java Message Service (JMS) 實現。

與 GlassFish v2 一起使用時,消息代理,即爲客戶機提供基於 JMS 的消息傳遞服務的 Open MQ 組件,可以與 GlassFish v2 位於相同進程中。也就是說,它們運行在同一個 Java Virtual Machine 中。Open MQ 同應用程序服務器的這種關係被稱爲 EMBEDDED 模式。消息代理還可以在 LOCAL 模式與 GlassFish v2 共享相同的生命週期,或以 REMOTE 模式單獨運行。

高效可靠的消息傳遞

使用 Open MQ,因爲確保了可靠的消息傳遞,所以可以將舊應用程序和新應用程序連接起來。這樣消息傳遞就有了保證,而且消息會以發送時的正確順序被傳遞。

Open MQ 支持異步消息,這意味着應用程序可以發送消息並繼續處理消息,而無需等待消息被接收。消息可以以發佈-訂閱方式發送。使用這種方法,消息的發送者被稱爲發佈者,將消息發送到被稱爲主題 的中間目標上,如 圖 8 所示。訂閱主題的多個應用程序(被稱爲訂閱者)通過將消息從主題中移除來消費消息。注意,發佈者完全獨立於訂閱者。消息還可以點對點發送,也就是說,發送到特定的接收者。在這種情況下,消息被髮送到隊列 中,接收者通過將消息從隊列中移除來消費消息。

Open MQ 中的發佈-訂閱機制
圖 8. Open MQ 中的發佈-訂閱機制

 

除它的處理能力之外,Open MQ 還易於安裝和管理。可以基於 openInstaller 使用基於 GUI 的安裝程序安裝 Open MQ。或者也可以進行基於文件的安裝,即解壓歸檔發行版,然後運行設置腳本來配置 Open MQ 以供使用。Open MQ 提供其自己的 Admin Console 和 CLI 來執行與 Open MQ 相關的操作,比如啓動消息代理。此外,Open MQ 通過 Java Authentication and Authorization Service (JAAS) 支持基於 Java Management Extensions (JMX) 的監控、集羣和身份驗證。

高性能和可用性

Open MQ 已作爲獨立的應用程序進行測試或集成到 GlassFish 中進行測試,性能結果非常好。另外,在數據和消息代理方面,Open MQ 都支持高可用性。將 Open MQ 與高可用性的 JDBC 提供商一起使用時,就會實現高可用性能力。OpenMQ 已使用 Sun Java System Application Server 9.1、Oracle Real Application Clusters (RAC) 和 mySQL 的 HADB 功能進行了測試。

有關 Open MQ 的詳細信息,請參閱 Open Message Queue 項目。

具有吸引力的支持報價

一組靈活的訂閱選項可用於 Sun Java System Application Server 9.1。可以獲得全額賠償的支持服務、隨需而變的軟件更新和升級、Sun Developer Expert 幫助以及更多。訂閱價格低至四個套接字每年 $4500。有關詳細信息,請參閱 Java System Application Server Subscriptions

結束語

高可用性、可擴展性、企業級性能、集中管理、簡單一步配置以及有效可靠的消息傳遞等特徵使得 GlassFish v2 成爲企業品質的應用服務器,它的穩健性可用於處理生產環境的需求,它的可靠性可用於處理業務關鍵的應用程序。添加對 web 服務互操作性和與兼容 JBI 的運行時的支持,應用服務器就可以爲企業提供許多靈活性來滿足其應用程序進程需求。不管是開源的 GlassFish v2,還是 GlassFish v2 的 Sun 支持的商業發行版 Sun Java System Application Server 9.1,GlassFish v2 都爲業務開放。

1 SPEC 和基準名稱 SPECjAppServer 2004 是 Standard Performance Evaluation Corporation 的註冊商標。Sun Java System Application Server 9.0 達到了 521.42 JOPS@Standard(1 Sun Fire T2000 [8 cores, 1 chip] 應用服務器和 1 Sun Fire T2000 [6 cores, 1 chip] 數據庫服務器)。有關最新的 SPECjAppServer 2004 基準結果,請訪問 SPEC 網站
2比較基於截至 2007 年 7 月 10 日使用單個 Sun Fire T2000 作爲應用服務器的所有 SPECjAppServer 2004 分數。參考分數有:Sun Java Application Server 9.1 達到 883.66 JOPS@Standard(1 Sun Fire T2000 [1 chip, 8 cores] 應用服務器和 1 Sun Fire T2000 [1 chip, 6 cores] 數據庫);BEA Weblogic 9.1 達到 801.70 JOPS@Standard(1 Sun Fire T2000 [1 chip, 8 cores] 應用服務器和 1 Sun Fire T2000 [1 chip, 6 cores] 數據庫);Sun Java Application Server 9.0 達到 521.42 JOPS@Standard(1 Sun Fire T2000 [1 chip, 8 cores] 應用服務器和 1 Sun Fire T2000 [1 chip, 6 cores] 數據庫);IBM WebSphere achieved 616.22 JOPS@Standard(1 Sun Fire T2000 [8 cores, 1 chip] 應用服務器和 1 Sun Fire X4200 [2 chips, 4 cores] 數據庫服務器);BEA Weblogic 9.0 達到 615.64 JOPS@Standard(1 Sun Fire T2000 [1 chip 8 cores] 應用服務器和 1 Sun Fire V490 [4 chips, 8 cores] 數據庫)。
3比較基於截至 11/23/07 發佈的所有 SPECjAppServer 2004 分數。參考分數有:Sun Java Application Server 9.1 達到 8439.36 JOPS@Standard(6 Sun SPARC Enterprise T2150 應用服務器 [6 chips, 48 cores] 和 1 Sun Fire E6900 數據庫 [24 chips, 48 cores]);Oracle Application Server 10.1 達到 10519.43 JOPS@Standard(Twelve HP BL860c 應用服務器 [24 chips, 48 cores] 和兩個 HP Superdome 數據庫服務器 [40 chips, 80 cores]);Oracle Application Server 10.1 達到 9459.19 JOPS@Standard(11 HP BL860c 應用服務器 [22 chips, 44 cores] 和兩個 HP Superdome 數據庫服務器 [40 chips, 80 cores])。

更多信息

關於作者

Ed Ortjava.sun.com 的一名員工。他撰寫了大量關於關係數據庫技術、程序設計語言、web 服務和 Ajax 的文章。


注:以上內容來自網絡,本人不承擔任何連帶責任

文章轉自:http://developers.sun.com.cn/Java/GFv2OpenforBusiness.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章