天天看點

EJB詳解前言What EJBWhy EJBHow EJB總結

前言

從最開始學習javaEE的時候,Ejb的傳說就開始漫天飛,而且特别懵根本不知道Ejb是容器還是元件!為什麼他就是核心了呢?為什麼他就可以分布在不同的伺服器上呢?還可以遠端調用,還有就是什麼是javabean啊,簡直就是一肚子問題?憋了好幾天一直都不懂!還好現在有一點的了解分享給大家

What EJB

Ejb是sun公司javaEE伺服器端元件模型,設計的目标和核心是為了應用部署分布式應用程式,簡單說就是把編寫好的程式放到伺服器上去執行,是以java具有跨平台的優勢,而且他的分布式系統不限于定義的平台,他的全稱是enterprise java bean,bean的意思為豆子,使用者存放東西,也可以傳輸

Why EJB

Ejb是java的一種規範,而且他可以用于分部署,和跨平台的開發,而且對于設計到很多資源和很多事物,使用者量很多,安全性,這些問題Ejb容器都會幫助我們解決,而我們隻需要開發我們企業bean就可以,也就是說隻需要自己寫業務邏輯代碼就可以,其他的事情都不需要關心,例如安全,和事物,多線程,這些都不用我們管,我們隻負責我們javabean中的方法,而容器會把這些事情都幫助我們幹了,當我們發送到Ejb的時候,EJb容器會首先進行處理,他會選擇讓我們去找那個方法,然後為我們提供服務,事物,安全措施,這樣就可以讓程式員從負責的關系中脫身,可以專心的開發自己的業務

Ejb不好的一面

由于EJB幫助我們幹了很多活,但是有的應用是不沒有這些複雜性的,是以也用不上EJB進行解決,舉個簡單的例子,如果Ejb是大貨車,而web服務是小轎車,如果你現在想跟着你對象去郊外浪漫,Ejb和web服務都可以載你們,别告訴你還使用EJb大貨車載着你對象去浪漫

3.ejb的性能問題:ejb的調用涉及太多類的序列化和反序列化,本來通過網絡傳輸已經很慢了,還要傳遞對象,資料量又更大了,還要涉及了對象的序列化和反序列化,這中間有太多的開銷了。

How EJB

首先說一下企業bean是實作企業javaBean技術的javaEE元件,并且它運作在Ejb容器中,塔裡面封裝了應用業務邏輯的伺服器端元件,就是我們的用于實作功能的類。

既然說到了企業bean那麼我們來說說企業bean的類型吧

EJB詳解前言What EJBWhy EJBHow EJB總結

java企業bean分為消息bean和會話bean,實體bean

1.會話bean:SessionBean 他負責的是業務邏輯,分為有狀态和無狀态,每當用戶端請求的時候,容器會選擇一個SessionBean來為用戶端服務,Session Bean可以直接通路資料庫,

2. Entity bean(實體bean)用于實作(O/R映射)負責将資料庫表的記錄映射到entity對象,Entity bean對象會随着資料庫的改變而去改變

3. MessageDriven Bean是Ejb引入的新bean,它是基于Jms的,當用戶端發送一個Jms消息時,MDB就會進行處理,MDB實際上是一個異步的無狀态SessionBean ,當用戶端調用MDB(消息bean)的時候客戶無需等待,會立刻的傳回,MDB就是用于異步處理客戶的請求,

在最開始的時候我們一直都在Ejb是可以遠端調用實作分布式的開發,那麼它是如何實作分布式開發的呢?

實作分布式

RMI技術(遠端調用),Ejb的基礎是RMI,通過Rmi javaEE将EJB元件為遠端對象,EJB雖然用到了RMi把Ejb打包發送到伺服器上,用戶端通過RMI技術到伺服器上進行調用,這樣就實作了分布式調用

伺服器叢集:就是通過RMI的通信,連接配接不同功能子產品的伺服器,以實作一個完整的功能。

實作技術

EJB是運作在伺服器上的元件,用戶端是通過網絡對Ejb對象進行調用,在java中能夠實作遠端調用的也就是RMI,而EJB技術正是基礎RMI的,是以通過RMI技術我們可以把EJB進行遠端調用,

RMI技術

對象序列化:就是把對象轉換為位元組流形式,為什麼要轉換為位元組流形式,因為我們要實作JavaIO接口,然後可以把位元組流就行傳輸到另一個伺服器中

假如你有一個A類的對象,當你要把他放到其他機器上的時候,我們需要将他變成位元組流然後放到數組中,這個時候你就可以傳輸數組了

RPC技術,他的全稱為Remote Method call,它是的意思為遠端過程調用,這個技術出現要比ejb早,是以我們通過遠端過程調用,我們可以實作一個機器調用另一台機器

RMI,全稱為Remote Method Invocation 遠端方法調用,它是利用了序列化和RPc技術實作的遠端調用方法,這個時候過程中我們不需要進行序列化,直接調用就可以了,遠端代用方法就是兩台計算機互相調用對方函數,剛才說到EJB是具有RMi,是以我們在實作遠端調用的時候,隻需要使用它的接口就可以,而不需去具體的實作,非常友善

EJB中服務叢集

在最開始的時候我解釋過叢集的問題,對于相同的不同的方法我們叫做叢集,對于相同的方法我們叫做分布式,是以對應我們Ejb來說其實我們就是使用的是叢集,根據伺服器上不同的方法我們去調用,是以實作了叢集的概念

a.EJB實作原理: 就是把原來放到用戶端實作的代碼放到伺服器端,并依靠RMI進行通信。

b.RMI實作原理 :就是通過Java對象可序列化機制實作分布計算和RPC遠端過程函數調用實作。

c.伺服器叢集: 就是通過RMI的通信,連接配接不同功能子產品的伺服器,以實作一個完整的功能。

總結

原理知識一大堆,但是梳理起來想想也就是一個意思,如何友善如何高效就怎麼來,感覺還是得看實踐是怎麼樣的!

繼續閱讀