什么是EJB?EJB详解
EJB到底是什么?
既然說了EJB 是為了"服務集群"和"企業級開發",那么,總得說說什么是所謂的"服務集群"和"企業級開發"吧!這個問題其實挺關鍵的,因為J2EE 中并沒有說明白,也沒有具體的指標或者事例告訴廣大程序員什么時候用EJB 什么時候不用。于是大家都產生一些聯想,認為EJB"分布式運算"指得是"負載均衡"提高系統的運行效率。然而,估計很多人都搞錯了,這個"服務群集"和"分布式運算"并沒有根本解決運行負載的問題,尤其是針對數據庫的應用系統。
為什么?
我們先把EJB 打回原形給大家來慢慢分析。
我們把EJB 的概念好好的分析一下,看看能發現些什么蛛絲馬跡。
3.1 EJB 概念的剖析
我們先看一下,EJB 的官方解釋:
商務軟件的核心部分是它的業務邏輯。業務邏輯抽象了整個商務過程的流程,并使用計算機語言將他們實現。
……
J2EE 對于這個問題的處理方法是將業務邏輯從客戶端軟件中抽取出來,封裝在一個組件中。這個組件運行在一個獨立的服務器上,客戶端軟件通過網絡調用組件提供的服務以實現業務邏輯,而客戶端軟件的功能單純到只負責發送調用請求和顯示處理結果。在J2EE 中,這個運行在一個獨立的服務器上,并封裝了業務邏輯的組件就是EJB(Enterprise JavaBean)組件。這其中我們主要關注這么幾點,我們來逐條剖析:
剖析1:所謂:“業務邏輯”
我們注意到在EJB 的概念中主要提到的就是"業務邏輯"的封裝,而這個業務邏輯到底是什么?說的那么懸乎,其實這個所謂的"業務邏輯"我們完全可以理解成執行特定任務的"類"。
剖析2:所謂:“將業務邏輯從客戶端軟件中抽取出來,封裝在組件中……運行在一個服務器上”
既然我們知道了"業務邏輯"的概念就是執行特定任務的"類",那么,什么叫"從客戶端軟件中抽取出來"?其實,這個就是把原來放到客戶端的"類",拿出來不放到客戶端了,放到一個組件中,并將這個組件放到一個服務器上去運行。
3.2 把EJB 這個概念變成大白話
變成大白話就是,“把你編寫的軟件中那些需要執行制定的任務的類,不放到客戶端軟件上了,而是給他打成包放到一個服務器上了”。
3.3 發現問題了
不管是用"八股文"說,還是用大白話說這個EJB 概念都提到了一個詞–“客戶端軟件”。
“客戶端軟件”?難道EJB 的概念中說的是C/S 軟件?
是的,沒錯!
EJB 就是將那些"類"放到一個服務器上,用C/S 形式的軟件客戶端對服務器上的"類"進行調用。
快崩潰了吧!
EJB 和JSP 有什么關系?EJB 和JSP 有關系,但是關系還真不怎么大,至多是在JSP 的服務器端調用遠端服務上的EJB 類,僅此而已。
4 .1 EJB 的最底層究竟是什么
我們揭開了EJB"八股"概念的真諦,那么,再來分析EJB 的底層實現技術,通過底層實
現技術來分析EJB 的工作方式。
4.2 EJB 的實現技術
EJB 是運行在獨立服務器上的組件,客戶端是通過網絡對EJB 對象進行調用的。在Java中,能夠實現遠程對象調用的技術是RMI,而EJB 技術基礎正是RMI。通過RMI 技術,J2EE將EJB 組件創建為遠程對象,客戶端就可以通過網絡調用EJB 對象了。
4.4 優點
這種機制給分布計算的系統設計、編程都帶來了極大的方便。只要按照RMI 規則設計程序,可以不必再過問在RMI 之下的網絡細節了,如:TCP 和Socket 等等。任意兩臺計算機之間的通訊完全由RMI 負責。調用遠程計算機上的對象就像本地對象一樣方便。RMI 可將完整的對象作為參數和返回值進行傳遞,而不僅僅是預定義的數據類型。也就是說,可以將類似Java 哈西表這樣的復雜類型作為一個參數進行傳遞。
4.5 缺點
如果是較為簡單的方法調用,其執行效率也許會比本地執行慢很多,即使和遠程Socket機制的簡單數據返回的應用相比,也會慢一些,原因是,其在網絡間需要傳遞的信息不僅僅包含該函數的返回值信息,還會包含該對象序列化后的字節內容。
4.6 EJB 是以RMI 為基礎的
通過RMI 技術,J2EE 將EJB 組件創建為遠程對象,EJB 雖然用了RMI 技術,但是卻只需要定義遠程接口而無需生成他們的實現類,這樣就將RMI 技術中的一些細節問題屏蔽了。但不管怎么說,EJB 的基礎仍然是RMI,所以,如果你想了解EJB 的原理,只要把RMI的原理搞清楚就行了。你也就弄清楚了什么時候用EJB 什么時候不需要用EJB 了。
總結:
a.EJB實現原理: 就是把原來放到客戶端實現的代碼放到服務器端,并依靠RMI進行通信。
b.RMI實現原理 :就是通過Java對象可序列化機制實現分布計算。
c.服務器集群: 就是通過RMI的通信,連接不同功能模塊的服務器,以實現一個完整的功能。
總結
以上是生活随笔為你收集整理的什么是EJB?EJB详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模拟游戏人物类
- 下一篇: moodle 页面联动效果