天天看點

JAVABEAN與EJB的差別

您現在可能已在使用 JavaBean,但還不了解它。如果有支援 Java 的浏覽器,那麼,在桌面上使用 JavaBean 就沒有限制。使用的 Web 頁面可以将 bean 作為小應用程式的一部分。您很快就會和作為浏覽器可視部分的 JavaBean 互動,然後,那些 JavaBean 将與伺服器上的 EJB 接口。這種能力也可以擴充到網際網路和内部網。

JavaBean 和 Server Bean(通常稱為 Enterprise JavaBean (EJB))有一些基本相同之處。它們都是用一組特性建立,以執行其特定任務的對象或元件。它們還有從目前所駐留伺服器上的容器獲得其它特性的能力。這使得 bean 的行為根據特定任務和所在環境的不同而有所不同。

這開辟了巨大商機。因為 JavaBean 是與平台無關的,是以對于将來的解決方案,供應商可以輕易向不同使用者推出其客戶機方的 JavaBean,而不必建立或維護不同的版本。這些 JavaBean 可以與執行商業功能(例如訂購、信用卡處理、電子彙款、存貨配置設定、運輸等)的 EJB 配合使用。這裡有巨大潛力,而這正是元件代理(WebSphere Application Server 企業版)設計提供的那種潛力。

JavaBean 是一種元件,它在内部有接口或有與其相關的屬性,以便不同人在不同時間開發的 bean 可以詢問和內建。可以建構一個 bean,而在以後構造時将其與其它 bean 綁定。這種過程提供了先建構,然後重複使用的方法,這就是元件的概念。可以将這種單一應用程式部署成獨立程式、ActiveX 元件或在浏覽器中。

JavaBean 因其外部接口(即屬性接口)而與純對象不同。這種接口允許工具讀取元件要執行的功能,将其與其它 bean 挂鈎,以及将其插入其它環境。JavaBean 設計成對單一程序而言是本地的,它們在運作時通常可視。這種可視元件可能是按鈕、清單框、圖形或圖表 - 但這不是必需的。

可執行元件

Server Bean 或 EJB 是部署在伺服器上的可執行元件或商業對象。有一個協定允許對其進行遠端通路或在特定伺服器上安裝或部署它們。有一系列機制允許它們将服務安全性、事務行為、并發性(由多個客戶機同時通路的能力)和持久性(其狀态可以儲存多久)的主要方面授權給 EJB 伺服器上其所在的容器。當安裝在容器中時,它們獲得各自的行為,該行為提供不同品質的服務,是以,選擇正确的 EJB 伺服器至關重要。這正是 IBM WebSphere 企業版的優勢所在。

EJB 是設計成運作在伺服器上,并由客戶機調用的非可視遠端對象。可通過多個非可視 JavaBean 建構 EJB。它們有一個部署描述符,其目的與 JavaBean 屬性相同:它是以後可由工具讀取的 bean 的描述。EJB 還獨立于平台,一旦編寫好,還可以在任何支援 Java 的平台(包括客戶機和伺服器)上使用。

因為 EJB 由諸如 IBM VisualAge for Java 這樣的工具集生成,是以,它是基于伺服器的對象,并用于遠端調用。它們安裝在 EJB 伺服器上,并象調用其它 CORBA 遠端對象那樣獲得進行調用的遠端接口。

ActiveX 對象

可以将 JavaBean 部署成 ActiveX 對象,雖然 EJB 的代理也可以這樣做,但是,因為 ActiveX 運作在桌面上,是以,EJB 本身不能成為 ActiveX 對象。要在與平台相關的、僅 Windows 平台上做到這一點,開發人員可以将 JavaBean 變換成 ActiveX 元件。

好處

EJB 的主要好處在于:建構 bean 時,bean 開發人員可以規定需要什麼類型的行為,而不必規定如何去做。開發分為兩部分:程式員開發 bean,然後驗證:它可與建構工具一起工作,并包括辨別所需服務品質行為種類的部署描述符。下一步,另一個程式員可以采用這個 bean,并使用讀取 EJB 部署描述符的部署工具,然後将該 bean 安裝到 Enterprise Java Server 上的容器中。在第二步中,部署工具采取一些操作 - 這可能意味着生成如狀态儲存代碼,放入事務挂鈎,或執行安全性檢查這樣的代碼。所有這些操作由部署工具生成,bean 開發人員和部署人員可以是不同的人。

可以通過使用部署工具,将任何獨立于平台的 JavaBean 改寫成具有可靠服務品質、特定于平台的 EJB,以滿足現有商業系統和應用程式的特定需求。這就是 EJB 伺服器對內建系統、網絡和體系結構如此重要的原因所在。

EJB 與 IBM WebSphere 企業版

在 IBM WebSphere 企業版中使用時,可以将 EJB 配置成被管理的商業對象。接受它們授權服務的容器是其安裝到的容器。将 EJB 的持久性部分映射在資料或狀态對象中。EJB 伺服器為 EJB 提供不同的服務品質,選擇正确的 EJB 伺服器可能對滿足完整的商業需求至關重要。“元件代理”功能極其健壯,該功能提供如負載均衡和支援伺服器組中多台機器的進階功能。它還有大大超出 Enterprise Java Server (EJS) 規範所倡導的系統管理功能。是以,按照基本标準編寫的 JavaBean 或 EJB 可以運作在使用“元件代理”功能的 WebSphere 企業版上,并獲得那些所有的附加功能。

EJB 伺服器還提供獨特的特性和服務品質,而且不完全相同。IBM“元件代理”有一些強大特性 - 例如,可伸縮性,它允許開發人員将 EJB 部署到從小型系統到大型網絡的不同類型伺服器。開發人員可以從小處入手,例如,在一個部門中,首先在 LAN 的 Java 伺服器上部署,一旦準備好,就知道可以将在那裡建立的 JavaBean 和 EJB 部署到全球網絡。然後,開發人員可以測試并熟悉這些 bean,試運作,制作樣本等等。滿意之後,開發人員可以通過将其移至高性能伺服器,來大幅度擴大其規模。JavaBean 和 EJB 不受任何計算機體系結構邊界的限制。它們用 Java 編寫,可以運作在任何具有 Java 虛拟機的系統上,并可以使用任何 Enterprise Java Server (EJS) 來部署對象。是以,開發人員現在可以在友善的系統上建構,以後在友善的系統上部署,而不必是同一台或同樣類型的機器。

IBM WebSphere 企業版支援将商業對象部署到多台伺服器。EJB 作為商業對象內建到“元件代理”功能,并作為任何其它商業對象處理。是以,EJB 可以連接配接到所選的後端系統,并執行任何所需操作,以滿足其商業需求。這就成為“元件代理”為 EJB 提供的基礎設施。通過将“元件代理”用作 EJB 伺服器,開發人員将能夠繼續使用目前舊有系統,并将其與電子商務接口一起提供。

為使 EJB 能在 WebSphere“元件代理”環境中工作,可以使用“元件代理”部署工具将其安裝在一台或多台伺服器上,然後将其添加到命名伺服器,以便可以全局查找到它。任何可以通路公共命名伺服器的人都可以找到它,找到其宿主,并可以在宿主上執行方法,同時建立 EJB。這就是“代理元件”要做的事。

示例

讓我們舉一個在 Web 購物站點上可以看到的電子購物車的例子。使用者的購物車是一個 JavaBean。使用者将貨架上的商品放入購物車,這些商品本身是 JavaBean。它們全部可視,并且面向使用者。結帳時,将使用者購物車中的商品發送到伺服器上的 EJB,該 EJB 執行一些必要的操作,如檢查信用卡授權和可用額度,生成封條,或生成給發貨部門的有關提什麼貨和發貨地點的特殊訓示 - 這就是商業程式已在進行的活動。

結束語

Bean 的全部意義不隻是其現有能力,更在于其可以為商業提供的有競争力的潛在能力。IT 設計師和應用開發人員現在可以将精力完全集中在商業邏輯,而将如事務、持久性和安全性的底層工作留給伺服器。WebSphere 的“元件代理”功能将提供所有這些(還有後端通路)和對象事務管理器。

繼續閱讀