【转载+整理】EJB(三) EJB分层架构
@李祥0_0? http://blog.csdn.net/happylee6688/article/details/9268431
@夜星云???http://blog.csdn.net/happyqwz/article/details/8237212
EJB的環境構成
? ? ? ?EJB組件運行在EJB容器之中,EJB容器是一個EJB引擎,它提供了EJB組件運行的環境,并對EJB組件進行管理。EJB容器一般包含在EJB服務器(或應用服務器)中,EJB服務器可以擁有一到多個EJB容器。比較有名的支持EJB的服務器有Sun One,Interstage,Websphere,Weblogic,JBoss,JRun等。
? ? ? ?調用EJB組件的一方被稱為EJB客戶端。EJB客戶端可以為運行在WEB容器中的JSP,SERVLET;或者一般的Java Application,Applet;或者Web Service;也可以是別的EJB組件。
? ? ? ? EJB客戶端與EJB服務器可處于同一JVM環境中,也可處于不同計算機的不同JVM環境。
EJB規范
? ? ? ?在J2EE規范將企業應用系統劃分的各邏輯層中,將封裝業務規則的EJB組件部署在業務層中,用于根據客戶端的服務請求進行業務數據的處理。EJB組件是基于分布式事務處理的企業級應用程序組件,其中包含處理業務數據的應用邏輯以及客戶端調用EJB組件的業務方法獲取服務的客戶端接口。
? ? ? ?當一個遵循EJB規范開發的第三方EJB組件被集成到一個應用系統中時,不需要更改其實現代碼或者重新編譯。
EJB的特征
- 可擴展(Scalable) 可以通過部署多臺EJB服務器實現擴容,其實和RPC技術類似,EJB是使用RMI
- 分布式 (Distributed) EJB可以部署在不同的服務器上,EJB服務器往往還提供了負載均衡
- 事務處理(Transactional) 跨連接的事務,這里是和Webservice的主要區別
- 數據存儲(Persistent) EJB容器使用JPA標準實現數據持久化
- 安全性 (Secure) 由 EJB 服務器提供資源的訪問權限控制
EJB的分布式
一個業務邏輯可能會調用分布在多臺服務器上的 EJB 組件,但是這么多的組件調用必須納入一個事務范圍之中。也就是說如果需要調用三個 EJB 組件,第一個調用成功,第二個調用成功,但第三個調用失敗了,因此在第一和第二次調用成功時進行的事務操作(這里的事務操作不單單指數據庫的,還有可能包括消息隊列服務的事務)都必須進行回滾。
但是,如果是調用三個 WebService 的話,那調用成功的那兩個基本上是不可能進行回滾的,調用完了就是完了。
WebService 只是對外提供的調用接口,而 EJB 是個業務組件。一個對外的 WebService 在服務端中也是需要實現業務邏輯的,在 J2EE 中,這些業務邏輯基本上都是由 EJB 組件來實現,對外發布 WebService 接口(當然了,使用符合 JAX-WS 規范的開源框架不用 EJB 也能做到)。
EJB容器
? ? ? ?EJB容器截取客戶和組建之間的通信,并根據配置信息添加基礎設施代碼,EJB容器用于提供EJB組件的開發、部署和運行環境。
EJB組件類型
? ? ? ? 在EJB2.0規范中定義了三種類型的組件:會話組件(Session Bean)、實體組件(Entity Bean)和消息驅動組件(Message-Driven Bean)。
? ? ? ? 會話組件和實體組件的定義由Home接口、Remote接口和組件類構成。在EJB組件的Home接口中定義了創建、刪除和定位EJB組件的方法;EJB組件的Remote接口用于定義組件能夠提供的商務方法;EJB組件類則用于實現Home接口中定義的組件生命期方法以及Remote接口中定義的商務方法。
會話組件
? ? ? ?會話組件代表EJB組件與客戶程序的一個短暫交互過程,其完成的功能可能是執行數據庫讀寫操作或者是進行簡單的數學計算等。
? ? ? ?會話組件可以看成是瞬態的,其生命周期相對短暫,只有在客戶程序與會話組件保持聯系的過程中會話組件才具有生命力。如果客戶程序結束會話過程,EJB容器將會話組件對象實例移出EJB容器中的組件實例池,該會話組件實例將失去生命力。另外,如果在客戶程序與會話組件交互過程中EJB容器崩潰,那么用戶必須重新創建一個新的會話組件對象實例來繼續會話過程。
實體組件
? ? ? ?實體組件用于提供數據庫中數據記錄在EJB服務器中的對象類型視圖。一個實體組件代表數據庫表中一行數據記錄。客戶端應用程序對實體組件的訪問等價于對EIS層中數據庫的訪問過程。
? ? ? ?在多客戶應用的情況下,通過EJB容器的事務管理功能能夠使多個客戶進程以共享的方式訪問同一個實體組件,進而保持組件對應數據庫記錄的一致性和完整性。
? ? ? ?實體組件的狀態是持續的,只要數據庫中的數據記錄存在,實體組件創建后就一直存在于EJB容器中,即使EJB服務器崩潰,實體組件同樣具有生命力。
消息驅動組件
? ? ? ?消息驅動組件(Message Driven Bean)是EJB2.0規范中引入的新型組件,用于在EJB容器中提供一種響應外部事件消息的組件類型機制。
? ? ? ?消息驅動組件是服務器端的無狀態類型組件。該類型的組件只有組件類定義,沒有類似于會話組件和實體組件的Home接口和Remote接口。
【下一篇將詳細介紹3種javaBean】
總結
以上是生活随笔為你收集整理的【转载+整理】EJB(三) EJB分层架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实验四 木马的远程控制和清除
- 下一篇: 虚拟机桥接模式怎么都连不上网(桥接模式下