EJB是什麼,什麼是EJB

一、什麼是EJB。

EJB是sun的JavaEE服務器端組件模型,設計目標與核心應用是部署分佈式應用程序。後面還有一堆下面再仔細分析。我相信在這麼寫下去,你就要關閉頁簽了。
尼瑪...什麼意思?
好吧,也許你只是來看看EJB是不是適合你的應用場景。如果看到底才發現適合,浪費時間了。

二、應用場景

比較適合:規模大、擴展性高、伸縮性強、多形態客戶端(C/S,或者C/S、B/S混合)的應用。
不太適合:純B/S結構的Web應用;請求、返回、調用能通過自定義協議解決的應用;超大訪問併發量的應用。

三、繼續什麼是EJB。

接“後面還有一堆”。EJB定義。
商務軟件的核心部分是它的業務邏輯。業務邏輯抽象了整個商務過程的流程,並使用計算機語言將他們實現。J2EE 對於這個問題的處理方法是將業務邏輯從客戶端軟件中抽取出來,封裝在一個組件中。這個組件運行在一個獨立的服務器上,客戶端軟件通過網絡調用組件提供的服務以實現業務邏輯,而客戶端軟件的功能單純到只負責發送調用請求和顯示處理結果。在J2EE 中,這個運行在一個獨立的服務器上,並封裝了業務邏輯的組件就是EJB(Enterprise JavaBean)組件。
下面我們來逐句分析
業務邏輯:所謂業務邏輯,並沒有什麼高大上,就是你平時寫的業務邏輯,完全可以翻譯成執行特定任務的"類"
抽取、封裝、在獨立服務器上運行:把原來放到客戶端的"類",拿出來不放到客戶端了,放到一個組件中,並將這個組件放到一個服務器上去運行。
下面就沒有什麼好分析的了,把EJB翻譯成大白話就是:
把你編寫的軟件中那些需要執行制定的任務的類,不放到客戶端軟件上了,而是給他打成包放到一個服務器上了,通過網絡訪問。
等等等等,聽上面的意識,難道EJB 的概念中說的是C/S 軟件?
是的,沒錯,你說的對。
很多人沒有看到這一行,直接關閉了頁籤。
那麼EJB和JSP一點關係都沒有嘛?
EJB 和JSP 有什麼關係?EJB 和JSP 有關係,但是關係還真不怎麼大,至多是在JSP 的服務器端調用遠端服務上的EJB 類,僅此而已。


以上只是簡單解釋了EJB是什麼,想深入瞭解,請搜索更深入的文章。


原理?這不就是原理嗎。大白話顯得不高端麼?
好吧,客戶端是通過網絡對EJB 對象進行調用的,在Java中,能夠實現遠程對象調用的技術是RMI,也正是EJB技術的基礎。
通過RMI 技術,J2EE將EJB 組件創建爲遠程對象,客戶端就可以通過網絡調用EJB 對象了。

四、關於RMI

方法調用從客戶對象經佔位程序(Stub)、遠程引用層(Remote Reference Layer)和傳輸層(Transport Layer)向下,傳遞給主機,然後再次經傳 輸層,向上穿過遠程調用層和骨幹網(Skeleton),到達服務器對象。 佔位程序扮演着遠程服務器對象的代理的角色,使該對象可被客戶激活。 遠程引用層處理語義、管理單一或多重對象的通信,決定調用是應發往一個服務器還是多個。傳輸層管理實際的連接,並且追追蹤可以接受方法調用的遠程對象。服務器端的骨幹網完成對服務器對象實際的方法調用,並獲取返回值。返回值向下經遠程引用層、服務器端的傳輸層傳遞迴客戶端,再向上經傳輸層和遠程調用層返回。最後,佔位程序獲得返回值。
這下明白了吧,沒明白?至少高端了吧。
說明白一點:RMI使用Java語言接口定義了遠程對象,它集合了Java序列化和Java遠程方法協議(Java Remote Method Protocol)。
還是不明白?下面一點點來分析。

四點一

序列化概念:對象的序列化過程就是將對象狀態轉換成字節流和從字節流恢復對象。將對象狀態轉換成字節流之後,可以用java.io 包中的各種字節流類將其保存到文件中,或者通過網絡連接將對象數據發送到另一個主機
大白話就是:你自定一個類MyClass,或者任何一個類的對象,將它轉換成字節數組,那麼你當然就可以隨便處置了它了,用得最多的就是把他發送到網絡上遠程的計算機上了。

四點二

遠程方法調用:本地計算機調用遠程計算機上的一個函數或者說函數

總結:利用對象序列化來實現遠程調用

四點三

優點

這種機制給分佈計算的系統設計、編程都帶來了極大的方便。只要按照RMI 規則設計程序,可以不必再過問在RMI 之下的網絡細節了,如:TCP 和Socket 等等。任意兩臺計算機之間的通訊完全由RMI 負責。調用遠程計算機上的對象就像本地對象一樣方便。RMI 可將完整的對象作爲參數和返回值進行傳遞,而不僅僅是預定義的數據類型。也就是說,可以將類似Java 哈西表這樣的複雜類型作爲一個參數進行傳遞。

缺點 

如果是較爲簡單的方法調用,其執行效率也許會比本地執行慢很多,即使和遠程Socket機制的簡單數據返回的應用相比,也會慢一些,原因是,其在網絡間需要傳遞的信息不僅僅包含該函數的返回值信息,還會包含該對象序列化後的字節內容。4.6 EJB 是以RMI 爲基礎的通過RMI 技術,J2EE 將EJB 組件創建爲遠程對象,EJB 雖然用了RMI 技術,但是卻只需要定義遠程接口而無需生成他們的實現類,這樣就將RMI 技術中的一些細節問題屏蔽了。但不管怎麼說,EJB 的基礎仍然是RMI,所以,如果你想了解EJB 的原理,只要把RMI的原理搞清楚就行了。你也就弄清楚了什麼時候用EJB 什麼時候不需要用EJB 了。

EJB 是以RMI 爲基礎的

通過RMI 技術,J2EE 將EJB 組件創建爲遠程對象,EJB 雖然用了RMI 技術,但是卻只需要定義遠程接口而無需生成他們的實現類,這樣就將RMI 技術中的一些細節問題屏蔽了。但不管怎麼說,EJB 的基礎仍然是RMI,所以,如果你想了解EJB 的原理,只要把RMI的原理搞清楚就行了。你也就弄清楚了什麼時候用EJB 什麼時候不需要用EJB 了。

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