EJB (Enterprise JavaBean)是J2EE的一部分,定義了一個用于開發基于組件的企業多重應用程序的標準。其特點包括網絡服務支持和核心開發工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)稱為Java 企業Bean,是Java的核心代碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和消息驅動Bean(MessageDriven Bean)。
1.Session Bean用于實現業務邏輯,它可以是有狀態的,也可以是無狀態的。每當客戶端請求時,容器就會選擇一個Session Bean來為客戶端服務。Session Bean可以直接訪問數據庫,但更多時候,它會通過Entity Bean實現數據訪問。
2.Entity Bean是域模型對象,用于實現O/R映射,負責將數據庫中的表記錄映射為內存中的Entity對象,事實上,創建一個Entity Bean對象相當于新建一條記錄,刪除一個Entity Bean會同時從數據庫中刪除對應記錄,修改一個Entity Bean時,容器會自動將Entity Bean的狀態和數據庫同步。
3.MessageDriven Bean是EJB2.0中引入的新的企業Bean,它基于JMS消息,只能接收客戶端發送的JMS消息然后處理。MDB實際上是一個異步的無狀態Session Bean,客戶端調用MDB后無需等待,立刻返回,MDB將異步處理客戶請求。這適合于需要異步處理請求的場合,比如訂單處理,這樣就能避免客戶端長時間的等待一個方法調用直到返回結果。
EJB實際上是SUN的J2EE中的一套規范,并且規定了一系列的API用來實現把EJB概念轉換成EJB產品.EJB是BEANS,BEANS是什么概念,那就是得有一個容納她,讓她可勁造騰的地方,就是得有容器.EJB必須生存在EJB容器中.這個容器可是功能強大之極!她首先要包裝你BEAN,EJB的客戶程序實際上從來就不和你編寫的EJB直接打交道,他們之間是通過HOME/REMOTE接口來發生關系的.它負責你的BEAN的所有的吃喝拉薩睡,比如BEAN的持續化,安全性,事務管理...
一.什么是 EJB?
一個技術規范:EJB 從技術上而言不是一種"產品"
EJB 是一種標準描述了構建應用組件要解決的:
可擴展 (Scalable)
分布式 (Distributed)
事務處理 (Transactional)
數據存儲 (Persistent)
安全性 (Secure)
二.Sun 對 EJB 的期望
提供一個標準的分布的、基于 OO 的組件架構
屏蔽復雜的系統級功能需求
Write once, run anywhere
與非 Java 應用之間的互操作能力
兼容 CORBA 標準
三.為什么選擇 EJB?
EJB 服務器完成"繁雜"的工作:
應用開發人員關注于業務邏輯的實現而不是底層的實現機制(類似于4GL 語言設計的目標)
支持事務處理
多個業務操作同時成功,或全部失敗
可以通過在代碼外的描述來定義事務處理級別
可擴展性
EJB 可以根據您應用的增長而擴展
EJB 服務器往往還提供了負載均衡和
安全性:由 EJB 服務器提供資源的訪問權限控制
四.EJB 架構
為了滿足架構的目標,規范中描述了
服務器 (Server)
容器 (Container)
類 (Class) 和實例 (Instance)
Home 和 Remote 接口
客戶端 (Client)
五. 簡化的編程模型
關注于業務邏輯實現:EJB 負責生命周期 (lifecycle), 數據存儲 (persistence), 事務處理語義 (transactional semantic), 安全(security), ...
通用的編程模型:各種服務的高層 API
Java 是其編程語言
EJB(業務邏輯代碼)表示了與特定商業領域(例如銀行、零售等行業)相適應的邏輯。它由運行在業務邏輯層的 enterprise bean 處理。一個 enterprise bean 可以從客戶端接受數據,對它進行處理,并將其發送到企業信息系統層以作存儲;同時它也可以從存儲器獲取數據,處理后將其發送到客戶端應用程序。
有三種類型的 enterprise beans:session beans、entity beans 和 message-driven beans。Session bean 描述了與客戶端的一個短暫的會話。當客戶端的執行完成后,session bean和它的數據都將消失;與之相對應的是一個entity bean描述了存儲在數據庫表中的一行持久穩固的數據,如果客戶端終止或者服務結束,底層的服務會負責 entity bean 數據的存儲。
Message-driven bean 結合了 session bean 和 Java 信息服務(JMS)信息監聽者的功能,它允許一個商業組件異步地接受 JMS 消息。