(這次科普記憶型閱讀博客)
在經歷一段時間的學習之后也對JAVA EE的體系有了一個初步的認識,而如題為什么要來搞這個叫做EJB的玩意呢
在頂層我們使用的框架是面向服務的,而在其之下的開發方法面向組件,最基層的便是面向對象面向過程的JAVA編程
面向過程和面向對象是兩種具體程序設計時的編程范式,他們沒有本質區別,只是使用不同的方法和角度去觀察一個世界。
而面向服務是編寫大型系統時才需要考慮的一種軟件架構設計思想。
面向組件(Component-Based Development)是一種軟件工程的實踐方法。
搞清他們的分層關系之后我們就可以切入正題了:
什么是EJB?
JAVA EE標准中,為了解決企業大型軟件的面向服務開發難題(包括但不限於服務接口定義、服務間通信、事務控制、內容持久化等)
開發了一套用於web環境專用的javaBean,稱為Enterprise JavaBean(EJB)。
EJB是一組構建企業級web應用的專用javaBean。
或者說,EJB是一套重量級的企業應用開發框架,使用者須遵循其規則開發具體業務邏輯。
EJB的目標是保證企業軟件開發的可伸縮性(保證企業系統平滑發展,而不是發展到一種規模重新更換一套軟件系統)。
EJB的源碼內容對用戶是透明的(即用戶不需要知道其源碼內容但用戶可以根據接口直接調用)。
EJB架構
EJB架構描述了5類內容:
1. 對象(Object),
2.類(Class),
3.組件(component): 組件也是抽象的概念,符合某種規范的類的組合構成組件。J2EE來說,有什么servlet,jsp, javabean,EJB都是組件。
4.容器(Container),容器是特殊的組件,可以包含其他組件和容器。
5.框架(framework),就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。
那拿老圖說事的話:
EJB組件:
EJB既然是一套javaBean,其中按功能分為三類構件:
1.Session bean,會話構件
2.Entity bean,實體構件
3.MessageDrivenBean,消息構件
每類組件包括接口文件,類文件和配置文件等內容。
(1)Session bean會話構件 會話構件的功能是封裝業務邏輯,完成某個具體的操作。
根據其生命周期不同,分為無狀態和有狀態兩種:
Stateful Session Bean: 有狀態會話 Bean,可以存儲用戶相關信息,在服務器端,一個 Bean 對象只為一個客戶服務
Stateless Session Bean: 無狀態會話 Bean,不存儲用戶相關信息,一般說來,在服務器端,一個 Bean 對象可能為很多客戶服務
(2)Entity bean實體構件 實體bean的功能是封裝數據庫中的數據。
具體地說,實體bean可以生成數據的持久化對象,一個實體bean對象對應數據庫表中的一行,把表中的屬性映射為對象屬性。
(3) Message Driven Bean消息驅動構件
消息驅動bean,是一種異步無狀態組件,結合了 session bean 和 Java信息服務(JMS)信息監聽者的功能,它允許一個商業組件異步地接受 JMS消息。
EJB框架的設計初衷
EJB為我們提供了很多在企業開發中需要使用到的服務,如事務管理/安全/持久化/分布式等,因為這些服務由容器提供,無需我們自行開發,這樣大大減少了我們的開發工作量。另外,EJB提供了強制式分層解耦設計方法。 EJB比較適合用於大型企業的面向服務的軟件開發。因為大型企業一般都會存在多個信息系統,而這些信息系統又相互關聯。為了避免業務功能重復開發,實現最大程度的重用,有必要把業務層獨立出來,讓多個信息系統共享一個業務中心,這樣應用就需要具備分布式能力。
(所以說在面向作業的時候這個就是宰牛刀了=-=)
EJB框架的特點
非EJB的應用模式的MVC應用,其顯示層、控制層和業務層, 三者不能分開。
采用EJB的應用模式的MVC應用,業務層被獨立出來。也就是說,顯示層和控制層可以部署在一台機器上,業務層部署在另一台機器上。
EJB比較適合用於大型企業,因為大型企業一般都會存在多個信息系統,而這些信息系統又相互關聯。
如下圖所示,某公司的兩個系統:網上商城系統和手機商場系統。若采用EJB模式,兩個系統可以共用分離出來的業務層。
當公司的業務發生變更時,只需修改分離出來的業務層即可。
EJB組件運作步驟圖
EJB如何實現不同web服務器之間的互相通信
EJB使用RMI(遠程方法調用)實現不同Java虛擬機之間的對象調用。
使用webService\CORBA等技術實現java虛擬機與非java程序服務器(如C ,python等)的數據交換問題。
實現不同web服務器之間的相互通信,是實現面向服務架構的基礎環節。
(暫時就這樣子了。課程需要的閱讀=-=開眼開眼啦。至於EJB的下載配置以及創建EJB項目寫到其他里面了啊=)