ejb3探索

 

1 概念

Enterprise Bean 是用 Java 編程語言編寫的,用於封裝應用程序業務邏輯的服務器端組件。

2 體系結構工作原理

開發者實現業務邏輯,由EJB 容器爲 Enterprise Bean 提供了系統級服務,如事務管理和安全授權等,EJB開發者可以專心實現具體的業務邏輯。

3 EJB的分類

3.1 會話beanSession Beans

會話 Bean 是用於向特定用戶會話提供服務的 Enterprise Bean。會話 Bean 通常在會話需要它時創建。與實體 Bean 相比,會話 Bean 的生存期較短。會話Bean包括兩種類型:無狀態會話bean、有狀態會話bean

3.1.1 無狀態會話beanStateless Session Beans

該 Bean 在它與用戶的會話期間不保存狀態信息。這些 Enterprise Bean 對於客戶端和應用程序服務之間的簡單交互(這些交互可以在一個方法調用中完成)是非常有用的。

處理訂單的 Enterprise Bean 就是無態 Bean 的一個示例。每個訂單可以由一個方法(如 processOrder())的調用進行處理。處理所需的全部信息都包含在方法參數中。

3.1.2 有狀態會話beanStateful Session Beans

該 Bean 在它與用戶的會話期間保存狀態信息。這些 Enterprise Bean 對於需要客戶端與應用程序服務交互的業務進程是非常有用的,此交互比單個方法調用需要更多的時間,並需要交互狀態的內存。

聯機購物車就是有態 Bean 的一個示例。最終用戶可以通過客戶端程序訂購一些商品。管理交互的有態會話 Bean 必須積累商品,直到最終用戶準備檢查積累的訂單,同意或拒絕商品,然後初始化商品處理。有態會話 Bean 必須存儲未處理的商品,並使最終用戶能夠添加更多商品。

3.2 消息驅動BeanMessage Driven Bean

消息驅動 Bean 是一種 Enterprise Bean,它使得 J2EE 應用程序能夠異步處理消息。該 Bean 用作 Java 消息服務 (Java Message Service, JMS) 消息偵聽程序,此消息偵聽程序類似於事件偵聽程序,不同的是消息驅動 Bean 接收消息而不是事件。消息可以由任何 J2EE 組件(應用程序客戶端、其他 Enterprise Bean 或 Web 組件)發送。

3.3 實體BeanEntity Bean

實體 Bean 是一種 Enterprise Bean,用於表示通常存儲在數據庫中的數據。實體 Bean 是 EJB 2.1 規範的一部分,在 J2EE 1.4 企業應用程序中使用這些 Bean。在 Java EE 5 企業應用程序中,應使用 Java 持久性 API 與數據庫進行交互。

每個實體 Bean 都表示一個數據集,如數據庫記錄中的字段。實體 Bean 的每個實例都包含該數據的一個元素,如數據庫表中的行。

4 EJB的適用場景及比較

4.1 適用場景

EJB容器管理EJB的實例化及銷燬,支持分佈式部署(分佈式的定義我的理解就是和集羣一樣,有問題再補充吧)。在大併發條件下容器管理EJB的實例化及銷燬,一次調用的時候是從EJB容器中獲取一個已存在的實例,這樣不必每次連接都實例化,對加快訪問速度有幫助(不包括有狀態的Session Bean)。

4.2 Entity Bean的實現比較

EJB3規範中對Entity Bean的實現要求和Hibernate很類似,EJB3中使用Java EE5支持的註釋來與數據庫映射,Hibernate中是使用xml描述文件來實現的(新版本的Hibernate也可以通過註釋來實現的)。總的來說EJB3Entity BeanHibernate在技術實現上基本是一致的,實際上JBoss實現EJB3Entity Bean也就是採用了Hibernate

5 技術使用用例

5.1 環境支持及IDE

JBossEJB3的支持最早也比較成熟:在JBoss容器下開發環境是EclipseJBossEclipse插件,運行容器主要是JBossTomcat,目前很多資料都是以JBoss的環境作爲例子。

Weblogic9不支持EJB3weblogic10 tech preview版本可以部分支持EJB3,對某些EJB3規範還不能支持。Weblogic附帶的WorkShop(基於Eclipse開發的)不支持直接建立EJB3工程。

使用NetBeans工具和sun application server集成環境可以已比較容易的新建EJB3的工程,並且NetBeans在建Entity Bean 時支持通過定義好屬性後自動生成set/get方法、或者是直接通過數據庫生成Entity Bean。這點和目前許多Hibernate的工具很像可以大大減少工作量。NetBeans還可以根據自帶的模版生成JSFcontrol類及展示頁面。

5.2 用例說明

6 總結

總的來說:EJB3EJB2相比在實現上主要是簡單開發,通過註釋語言簡化了很多EJB2的配置文件和接口規定,EJB3的開發更像是普通的Java類開發(至於EJB3的調試:目前來看好像還不能直接像Java類那樣調試,需要部署容器調試,具體進一步瞭解後補充)。

EJB3Session BeanMessage Bean在功能及使用上和EJB2應該是一致的,主要用來實現組件的業務邏輯。EJB3中的Entity BeanEJB3規範參考Hibernate實現數據持久化的表現,主要是方便數據的持久化。

目前的運行容器JBossEJB3支持上應該是比較成熟的,Weblogic的發佈版本不支持EJB3,只在tech preview版本中部分支持EJB3

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