標籤:
一、EJB概述
EJB(EnterpriseJava Bean)--java企業Bean,是J2EE十三種規範的一部分,為伺服器端組件模型,設計目標與核心應用是部署分布式應用程式。EJB是java的核心代碼,包括三種Bean類型:會話Bean(Session Bean),實體Bean(EntityBean)和訊息驅動Bean(MessageDriven Bean)。
通俗的說,EJB就是一個運行在獨立的伺服器上,封裝了商務邏輯的組件。在一個商務軟體中,核心部分就是其商務邏輯,它抽象了整個商務過程的流程。J2EE對於這個問題的處理方法是將商務邏輯從用戶端抽取出來,封裝在EJB組件中。它運行在一個獨立的伺服器上,用戶端軟體通過網路調用組件提供的服務以實現商務邏輯,而用戶端軟體的功能單純到只負責調用請求和顯示處理結果。
二、EJB在java三層中的角色
在J2EE經典三層的圖中,各個規範的位置關係如下:
從來看,JSP,Servlet是展示層,EJB是商務邏輯層,負責處理商務邏輯。EJB可以從用戶端接收資料,對它進行處理,並將其發送到公司資訊系統層以作儲存;同時也可以從儲存空間擷取資料,處理後將其發送到用戶端應用程式。
三、EJB中的Bean
EJB作為商務邏輯層,是如何與展示層和資料庫進行資料交換和儲存呢?主要依靠會話Bean,實體Bean和訊息驅動Bean。
1、Session Bean:用於實現商務邏輯,它可以是有狀態的,也可以是無狀態的。每當用戶端請求時,容器就會選擇一個SessionBean來為用戶端服務。SessionBean可以直接存取資料庫,但更多時候,它會通過Entity Bean實現資料訪問。
2、Entity Bean:是域模型對象,用於實現O/R映射,負責將資料庫中的表記錄映射為記憶體中的Entity對象,事實上,建立一個EntityBean對象相當於建立一條記錄,刪除一個Entity Bean會同時從資料庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將EntityBean的狀態和資料庫同步。
3、MessageDriven Bean:是EJB2.0中引入的新的企業Bean,它基於JMS訊息,只能接收用戶端發送的JMS訊息然後處理。MDB實際上是一個非同步無狀態SessionBean,用戶端調用MDB後無需等待,立刻返回,MDB將非同步處理客戶請求。這適合於需要非同步處理請求的場合,比如訂單處理,這樣就能避免用戶端長時間的等待一個方法調用直到返回結果。
四、何時使用EJB
1、分布式對象
當使用企業級的JavaBean,分布式對象用於建立企業層級的系統。這意味著你的系統可以部署於不同的物理機器,由此可產生許多彼此獨立的進程,以達到效能、可擴充性、可用性的系統目標。
2、對象持久化
對象持久化表示其狀態可以被儲存,大多數情況下,持久化對象儲存在關係型資料庫中,而對象和關係型資料庫相互差異太大。和JAVA相比,關係型資料庫擁有有限的模型化能力,諸如對象繼承和封裝。此外,最主要的轉換問題是SQL資料類型和Java的資料類型並不完全符合。所有的這些問題在使用CMP實體Bean時都得到瞭解決。
3、交易管理
對資料的並發訪問是令開發人員最頭痛的問題之一。所有相關需要考慮的問題諸如資料庫鎖定,資料完整性丟失事件可以導致建立高度複雜的架構以管理資料庫層級的共用資料的訪問。EJB自動處理這些複雜的線程和並發的共用資料問題。正如前面提到的,EJB容器提供了所有必須的事務服務給企業Bean去管理背景資料。
【J2EE淺析】——EJB