Enterprise JavaBean學習筆記(1)

來源:互聯網
上載者:User

(一)概述

1、Enterprise JavaBean (EJB) 是 Sun Microsystems 對 CORBA 的可移植性和複雜性的解決方案。EJB 引入了比 CORBA 更簡單的編程模組,它可以讓開發人員建立可移植分布式組件,稱作 Enterprise Bean。EJB 編程模組可以讓開發人員建立安全的、事務性的和持久的商業對象 (Enterprise Bean),該對象使用非常簡單的編程模組和聲明屬性。與 CORBA 不同,例如存取控制(授權安全性)和交易管理等設施非常易於編程。CORBA 需要使用複雜的 API 來利用這些服務,而 EJB 則根據一種稱作“部署描述資訊”的特性檔案中的聲明將這些服務自動應用到 Enterprise Bean。這個模型確保了 bean 開發人員可以集中精力編寫商業邏輯,而容器會自動管理更複雜但又必要的操作。

由於 EJB 規範頒布了一組明確的 EJB 容器(供應商伺服器)和 EJB 組件(商業對象)之間的契約,因此 EJB 中實現了可移植性。這些契約或規則確切規定容器必須為

2、Enterprise Bean 提供什麼服務,bean 開發人員需要使用什麼 API 和聲明屬性來建立 Enterprise Bean。由於詳細指定了 Enterprise Bean 的生命週期,因此供應商知道如何在運行時管理 bean,bean 開發人員確切知道 Enterprise Bean 在其存在期間可以做什麼。


3、Enterprise JavaBean 簡化了分布式對象的開發、部署和訪問。EJB 分布式對象(一種 Enterprise Bean)的開發人員只需依照為 Enterprise JavaBean 建立的契約和協議實現對象。支援 EJB 的應用程式伺服器可以,也確實,使用任何分布式網路通訊協定,包括本地 Java RMI 協議 (JRMP)、專有協議或 CORBA 的網路通訊協定 (IIOP)。不管在某個特定產品中使用的基本網路通訊協定是什麼,EJB 使用相同的編程 API 和語義以 Java RMI-IIOP 訪問分布式對象。協議的細節對應用程式和 bean 開發人員隱藏;對於所有供應商來說,定位和使用分布式 bean 的方法是相同的。



註:
Enterprise Bean 與 JavaBean 不同。JavaBean 是使用 java.beans 包開發的,它是 Java 2 標準版的一部分。JavaBean 是一台機器上同一個地址空間中啟動並執行組件。JavaBean 是進程內 組件。Enterprise Bean 是使用 javax.ejb 包開發的,它是標準 JDK 的擴充,是 Java 2 Enterprise Edition 的一部分。Enterprise Bean 是在多台機器上跨幾個地址空間啟動並執行組件。因此 Enterprise Bean 是進程間 組件。JavaBean 通常用作 GUI 視窗小組件,而 Enterprise Bean 則用作分布式商業對象。

(二)EJB規範

 

Enterprise JavaBean 規範為基於組件的事務性、分布式對象系統定義了一個體繫結構。該規範頒布了一個編程模組,即組成 EJB API 的契約或協議以及一組類和介面。EJB 編程模組向 bean 開發人員和 EJB 伺服器供應商提供了一組契約,這組契約定義了開發的公用平台。這些契約的目標是在支援一組豐富功能性的同時能夠確保供應商之間的可移植性。


Enterprise Bean 依賴容器來擷取它的需求。如果 Enterprise Bean 需要訪問 JDBC 串連或另一個 Enterprise Bean,那麼它需要利用容器來完成此項操作;如果 Enterprise Bean 需要訪問調用者的身份、擷取它自身的引用或訪問特性,那麼它需要利用容器來完成這些操作。Enterprise Bean 通過以下三種機制之一與容器互動:回調方法、EJBContext 介面或 JNDI。

  • 回調方法:

    每個 bean 都會實現 EnterpriseBean 介面的子類型,該介面定義了一些方法,稱作回調方法。每個回調方法在 bean 的生命週期期間向它提示一個不同事件,當容器要合用某個 bean、將其狀態儲存到資料庫、結束事務、從記憶體中除去該 bean 等操作時,它將調用這些方法來通知該 bean。回調方法可以讓 bean 在事件之前或之後立即執行內部調整。
  • EJBContext:

    每個 bean 都會得到一個 EJBContext 對象,它是對容器的直接引用。EJBContext 介面提供了用於與容器互動的方法,因此那個 bean 可以請求關於環境的資訊,如其客戶機的身份或事務的狀態,或者 bean 可以擷取它自身的遠端參照。

  • Java 命名和目錄介面 (JNDI):

    JNDI 是 Java 平台的標準擴充,用於訪問命名系統,如 LDAP、NetWare、檔案系統等。每個 bean 自動擁有對某個特定命名系統(稱作環境命名內容 (ENC))的訪問權。ENC 由容器管理,bean 使用 JNDI 來訪問 ENC。JNDI ENC 允許 bean 訪問資源,如 JDBC 串連、其它 Enterprise Bean,以及特定於該 bean 的屬性。

遠程和本地介面

遠程和本地介面表示 bean,但容器不允許從客戶機應用程式直接存取 bean。每次請求、建立、或刪除 bean 時,容器都會管理整個過程。


本地介面:表示組件的生命週期方法(建立、破壞、尋找)。

遠程介面:表示 bean 的商業方法。

遠程和本地介面分別擴充 javax.ejb.EJBObject 和 javax.ejb.EJBHome 介面。這些 EJB 介面類型定義了一組標準的公用程式方法,並為所有遠程和本地介面提供了常用基本類型。


遠程介面定義了 bean 的商業方法,這些方法特定於 bean 表示的商業概念。遠程介面是從 javax.ejb.EJBObject 介面劃分出的子類,而這個介面又是 java.rmi.Remote 介面的子類。

import javax.ejb.EJBObject;

import java.rmi.RemoteException;


public interface Customer extends EJBObject {


    public Name getName() throws RemoteException;

    public void setName(Name name) throws RemoteException;

    public Address getAddress() throws RemoteException;

    public void setAddress(Address address) throws RemoteException;


}


 

遠程介面定義了讀方法和寫方法,用於讀取和更新有關商業概念的資訊。這代表一種 bean,叫作實體 Bean,它表示持久商業對象(資料存放區在資料庫中的商業對象)。實體 Bean 表示資料庫中的商業資料,並添加特定於該資料的行為。


商業方法

       商業方法還可以表示 bean 執行的任務。雖然實體 Bean 通常都會有面向任務的方法,但是任務通常代表另一種 bean,稱作會話 Bean。會話 Bean 不表示類似於實體 Bean 的資料。它們表示執行服務(如在旅館預定房間)的商業進程或代理程式。以下是 HotelClerk bean 的遠程介面的定義,這個 bean 是一種會話 Bean


import javax.ejb.EJBObject;

import java.rmi.RemoteException;

public interface HotelClerk extends EJBObject {

  

    public void reserveRoom(Customer cust, RoomInfo ri,

                            Date from,     Date to)

                throws RemoteException;

    public RoomInfo availableRooms(Location loc, Date from, Date to)

                    throws RemoteException;

}


HotelClerk 遠程介面中定義的商業方法表示進程而不是簡單的讀方法。HotelClerk bean 充當代理程式,因為它代表使用者執行任務,但它自己在資料庫中並不是持久的。您不需要有關 HotelClerk 的資訊;您需要旅館店員為您執行任務。這是會話 Bean 的典型行為。

      有兩種基本的 Enterprise Bean:實體 Bean,表示資料庫中的資料,以及會話 Bean,表示進程或充當執行任務的代理程式。在構建 EJB 應用程式時,您會建立許多 Enterprise Bean,每一個都表示不同的商業概念。每個商業概念都將由實體 Bean 或會話 Bean 表示。您將根據如何使用商業概念來選擇它將成為哪種 bean。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.