日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

EJB究竟是什么,真的那么神奇吗??

發(fā)布時間:2024/6/21 综合教程 23 生活家
生活随笔 收集整理的這篇文章主要介紹了 EJB究竟是什么,真的那么神奇吗?? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.我們不禁要問,什么是"服務集群"?什么是"企業(yè)級開發(fā)"?
既然說了EJB 是為了"服務集群"和"企業(yè)級開發(fā)",那么,總得說說什么是所謂的"服務
集群"和"企業(yè)級開發(fā)"吧!
這個問題事實上挺關鍵的,由于J2EE 中并沒有說明確,也沒有詳細的指標或者事例告訴
廣大程序猿什么時候用EJB 什么時候不用。于是大家都產(chǎn)生一些聯(lián)想,覺得EJB"分布式運
算"指得是"負載均衡"提高系統(tǒng)的執(zhí)行效率。然而,預計非常多人都搞錯了,這個"服務群集"
和"分布式運算"并沒有根本解決執(zhí)行負載的問題,尤其是針對數(shù)據(jù)庫的應用系統(tǒng)。
為什么?
我們先把EJB 打回原形給大家來慢慢分析。


2.把EJB 掰開了揉碎了
我們把EJB 的概念好好的分析一下,看看能發(fā)現(xiàn)些什么蛛絲馬跡。


3.1EJB 概念的剖析
我們先看一下,EJB 的官方解釋:
商務軟件的核心部分是它的業(yè)務邏輯。業(yè)務邏輯抽象了整個商務過程的流程,并使用計
算機語言將他們實現(xiàn)。
……
J2EE 對于這個問題的處理方法是將業(yè)務邏輯從client軟件中抽取出來,封裝在一個組
件中。這個組件執(zhí)行在一個獨立的server上,client軟件通過網(wǎng)絡調(diào)用組件提供的服務以實
現(xiàn)業(yè)務邏輯,而client軟件的功能單純到僅僅負責發(fā)送調(diào)用請求和顯示處理結(jié)果。在J2EE 中,
這個執(zhí)行在一個獨立的server上,并封裝了業(yè)務邏輯的組件就是EJB(Enterprise Java
Bean)組件。
這當中我們主要關注這么幾點,我們來逐條剖析:
剖析1:所謂:"業(yè)務邏輯"
我們注意到在EJB 的概念中主要提到的就是"業(yè)務邏輯"的封裝,而這個業(yè)務邏輯究竟是
什么?說的那么懸乎,事實上這個所謂的"業(yè)務邏輯"我們?nèi)荒軌蚶斫獬蓤?zhí)行特定任務的"類
"。
剖析2:所謂:"將業(yè)務邏輯從client軟件中抽取出來,封裝在組件中……執(zhí)行在一個服
務器上"
既然我們知道了"業(yè)務邏輯"的概念就是執(zhí)行特定任務的"類",那么,什么叫"從client
軟件中抽取出來"?事實上,這個就是把原來放到client的"類",拿出來不放到client了,放
到一個組件中,并將這個組件放到一個server上去執(zhí)行。
3.2 把EJB 這個概念變成大白話
變成大白話就是,"把你編寫的軟件中那些須要執(zhí)行制定的任務的類,不放到client軟
件上了,而是給他打成包放到一個server上了"。
3.3 發(fā)現(xiàn)問題了
無論是用"八股文"說,還是用大白話說這個EJB 概念都提到了一個詞--"client軟件"。
"client軟件"?難道EJB 的概念中說的是C/S 軟件?
是的,沒錯!
EJB 就是將那些"類"放到一個server上,用C/S 形式的軟件client對server上的"類"進
行調(diào)用。
快崩潰了吧!
EJB 和JSP 有什么關系?EJB 和JSP 有關系,可是關系還真不怎么大,至多是在JSP 的
server端調(diào)用遠端服務上的EJB 類,僅此而已。


4 .1 EJB 的最底層到底是什么
我們揭開了EJB"八股"概念的真諦,那么,再來分析EJB 的底層實現(xiàn)技術(shù),通過底層實
現(xiàn)技術(shù)來分析EJB 的工作方式。


4.2 EJB 的實現(xiàn)技術(shù)
EJB 是執(zhí)行在獨立server上的組件,client是通過網(wǎng)絡對EJB 對象進行調(diào)用的。在Java
中,能夠?qū)崿F(xiàn)遠程對象調(diào)用的技術(shù)是RMI,而EJB 技術(shù)基礎正是RMI。通過RMI 技術(shù),J2EE
將EJB 組件創(chuàng)建為遠程對象,client就能夠通過網(wǎng)絡調(diào)用EJB 對象了。
4.3 看看RMI 是什么東東
在說RMI 之前,須要理解兩個名詞:
對象的序列化
分布式計算與RPC
名詞1:對象的序列化
對象的序列化概念:對象的序列化過程就是將對象狀態(tài)轉(zhuǎn)換成字節(jié)流和從字節(jié)流恢復對
象。將對象狀態(tài)轉(zhuǎn)換成字節(jié)流之后,能夠用java.io 包中的各種字節(jié)流類將其保存到文件里,
或者通過網(wǎng)絡連接將對象數(shù)據(jù)發(fā)送到還有一個主機。
上面的說法有點"八股",我們最好還是再用白話解釋一下:對象的序列化就是將你程序中實
例化的某個類的對象,比方,你自定一個類MyClass,或者不論什么一個類的對象,將它轉(zhuǎn)換成
字節(jié)數(shù)組,也就是說能夠放到一個byte 數(shù)組中,這時候,你既然已經(jīng)把一個對象放到了byte
數(shù)組中,那么你當然就能夠隨便處置了它了,用得最多的就是把他發(fā)送到網(wǎng)絡上遠程的計算
機上了。如圖2 11所看到的。


名詞2:分布式計算與RPC
RPC 并非一個純粹的Java 概念,由于在Java 誕生之前就已經(jīng)有了RPC 的這個概念,RPC
是"Remote Procedure Call"的縮寫,也就是"遠程過程調(diào)用"。在Java 之前的大多數(shù)編程語
言,如,F(xiàn)ortran、C、COBOL 等等,都是過程性的語言,而不是面向?qū)ο蟮摹K裕@些編
程語言非常自然地用過程表示工作,如,函數(shù)或子程序,讓其在網(wǎng)絡上還有一臺機器上運行。說
白了,就是本地計算機調(diào)用遠程計算機上的一個函數(shù)。
如圖2 12所看到的。


名詞3:二者結(jié)合就是RMI
RMI 英文全稱是"Remote Method Invocation",它的中文名稱是"遠程方法調(diào)用",它就
是利用Java 對象序列化的機制實現(xiàn)分布式計算,實現(xiàn)遠程類對象的實例化以及調(diào)用的方法。
說的更清楚些,就是利用對象序列化來實現(xiàn)遠程調(diào)用,也就是上面兩個概念的結(jié)合體,利用
這種方法來調(diào)用遠程的類的時候,就不須要編寫Socket 程序了,也不須要把對象進行序列
化操作,直接調(diào)用即可了很方便。
遠程方法調(diào)用是一種計算機之間對象互相調(diào)用對方函數(shù),啟動對方進程的一種機制,使用這
種機制,某一臺計算機上的對象在調(diào)用另外一臺計算機上的方法時,使用的程序語法規(guī)則和
在本地機上對象間的方法調(diào)用的語法規(guī)則一樣。
如圖2 13所看到的。

4.4 長處
這種機制給分布計算的系統(tǒng)設計、編程都帶來了極大的方便。僅僅要依照RMI 規(guī)則設計程
序,能夠不必再過問在RMI 之下的網(wǎng)絡細節(jié)了,如:TCP 和Socket 等等。隨意兩臺計算機
之間的通訊全然由RMI 負責。調(diào)用遠程計算機上的對象就像本地對象一樣方便。
RMI 可將完整的對象作為參數(shù)和返回值進行傳遞,而不僅僅是提前定義的數(shù)據(jù)類型。也就
是說,能夠?qū)⑾嗨艼ava 哈西表這種復雜類型作為一個參數(shù)進行傳遞。
4.5 缺點
假設是較為簡單的方法調(diào)用,其運行效率或許會比本地運行慢非常多,即使和遠程Socket
機制的簡單數(shù)據(jù)返回的應用相比,也會慢一些,原因是,其在網(wǎng)絡間須要傳遞的信息不僅僅
包括該函數(shù)的返回值信息,還會包括該對象序列化后的字節(jié)內(nèi)容。
4.6 EJB 是以RMI 為基礎的
通過RMI 技術(shù),J2EE 將EJB 組件創(chuàng)建為遠程對象,EJB 盡管用了RMI 技術(shù),可是卻僅僅需
要定義遠程接口而無需生成他們的實現(xiàn)類,這樣就將RMI 技術(shù)中的一些細節(jié)問題屏蔽了。
但無論怎么說,EJB 的基礎仍然是RMI,所以,假設你想了解EJB 的原理,僅僅要把RMI
的原理搞清楚即可了。你也就弄清楚了什么時候用EJB 什么時候不須要用EJB 了。


5.EJB 中所謂的"服務群集"
既然已經(jīng)知道了,RMI 是將各種任務與功能的類放到不同的server上,然后通過各個服
務器間建立的調(diào)用規(guī)則實現(xiàn)分布式的運算,也就明確EJB 所謂的"服務群集"的概念。
就是將原來在一個計算機上運算的幾個類,分別放到其它計算機上去執(zhí)行,以便分擔運
行這幾個類所須要占用的CPU 和內(nèi)存資源。同一時候,也能夠?qū)⒉煌能浖δ苣K放到不同的
server上,當須要改動某些功能的時候直接改動這些server上的類即可了,改動以后全部客
戶端的軟件都被改動了。如圖2 14所看到的。

6.這樣的部署難道是無懈可擊
圖2 14所看到的的這個"服務群集"看似"無懈可擊",事實上是它這個圖沒有畫完整,我們來
把這個圖畫完整,再來看看有什么問題沒有。
6.1 瓶頸在數(shù)據(jù)庫端
細致觀察之后,發(fā)現(xiàn)這樣的配置是有瓶頸的,如圖2 15所看到的。


我們看看圖2 15的結(jié)構(gòu)圖,如今假設想實現(xiàn)各個server針對同一個數(shù)據(jù)庫的查詢,那
么,無論你部署多少個功能server,都須要針對一個數(shù)據(jù)庫server進行查詢操作。也就是說,
無論你的"計算"有多么"分布"也相同須要從一臺server中取得數(shù)據(jù)。盡管,看起來將各個功
能模塊分布在不同的server上從而分擔了各個主計算機的CPU 資源,然而,真正的瓶頸并不
在這里,而是,數(shù)據(jù)庫server那里。數(shù)據(jù)庫server都會很忙的應付各個server的查詢及操
作請求。
因此,通過這個結(jié)構(gòu)圖使我們了解到了EJB 根本不能全然解決負載的問題,由于,瓶頸
并不在功能模塊的所在位置,而是在數(shù)據(jù)庫server這里。
6.2 假如分開數(shù)據(jù)庫,數(shù)據(jù)共享怎么辦
有的讀者一定會想到以下的這個應用結(jié)構(gòu),如圖2 16所看到的。


就是把每個功能server后面都部署一個數(shù)據(jù)庫,這樣不就攻克了上節(jié)所說的問題了
嗎?是的攻克了數(shù)據(jù)庫查詢負載的問題,然而又出現(xiàn)了新的問題,就是"數(shù)據(jù)共享"的問題就
又不easy攻克了。
6.3 網(wǎng)絡面臨較大壓力,讓你的應用慢如老牛
我們再向前翻看看如圖2 15所看到的的這樣的架構(gòu)中存在兩個網(wǎng)絡,一個是"A 網(wǎng)"一個是"B
網(wǎng)",這兩個網(wǎng)絡是不同的。"B 網(wǎng)"往往是局域網(wǎng),一般帶寬是10M/100M,速度較快,因此
到還好說,然而,"A 網(wǎng)"往往是互聯(lián)網(wǎng)或者是利用電信網(wǎng)絡互聯(lián)VPN 網(wǎng)或稱廣域網(wǎng)。"A 網(wǎng)"
的特點是帶寬一般較窄,如ADSL 的網(wǎng)絡唯獨512K-2M 的帶寬,由于廣域網(wǎng)互聯(lián)的成本較
高,所以一般不會有較高的帶寬。
而在這個網(wǎng)絡上恰恰跑的是功能模塊和client軟件之間交換的數(shù)據(jù),而這部分數(shù)據(jù)恰恰
優(yōu)勢很占用帶寬的。
因此,這個應用架構(gòu)其執(zhí)行速度能夠想見是多么的慢了。說句不夸張的話,有點想老牛
拉破車一樣的慢。
一個如老牛的系統(tǒng):
眼下在中國互聯(lián)網(wǎng)做運營商網(wǎng)絡管理系統(tǒng)的一個大公司,它的一個早期的網(wǎng)管軟件就是
採用了這樣的架構(gòu)來做的C/S 結(jié)構(gòu)的應用系統(tǒng)。
有一次,我作為評估者來對其應用系統(tǒng)進行評估,將其部署到一個非運營商大型的網(wǎng)絡
中的時候,便出現(xiàn)了我們上述描寫敘述的情況,速度已經(jīng)到了難以忍受的地步,打開一個流量圖,
有時候須要用15分鐘的時間才干呈現(xiàn)完整。然而,該系統(tǒng)在開發(fā)階段并沒有發(fā)現(xiàn)這個問題,
為什么呢?由于,他們沒有考慮到應用的實際用戶連接網(wǎng)絡的復雜性,從而給該公司造成較
大損失,以至于,這個開發(fā)架構(gòu)被終于遺棄。

7.EJB 活學活用,J2EE 不是必須使用EJB
通過上面小節(jié)的解說似乎好像EJB 和開發(fā)Web 應用的B/S 結(jié)構(gòu)的系統(tǒng)關系并不大,事實上
倒也不然。我們假設把"client程序"理解成某一臺server,這樣也是能夠被應用的,并且,
假設是server互相之間做EJB 的調(diào)用的話,也就不存在廣域網(wǎng)帶寬限制的問題了。
可是,例如以下情況盡量就不要使用EJB 了:
1、較為簡單的純Web 應用開發(fā),不須要用EJB。
2、須要與其它服務程序配合使用的應用,但調(diào)用或返回的自己定義的網(wǎng)絡協(xié)議能夠解決
的應用程序,不須要使用EJB。
3、較多人并發(fā)訪問的C/S 結(jié)構(gòu)的應用程序,盡量不要使用EJB。

總結(jié):

a.EJB實現(xiàn)原理: 就是把原來放到client實現(xiàn)的代碼放到server端,并依靠RMI進行通信。

b.RMI實現(xiàn)原理 :就是通過Java對象可序列化機制實現(xiàn)分布計算。

c.server集群: 就是通過RMI的通信,連接不同功能模塊的server,以實現(xiàn)一個完整的功能。

總結(jié)

以上是生活随笔為你收集整理的EJB究竟是什么,真的那么神奇吗??的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 免费一级欧美 | 亚洲精品成人无码熟妇在线 | 夜夜嗨av禁果av粉嫩avhd | 亚洲女人在线 | 久久中文字幕在线 | 女人脱下裤子让男人桶 | 免费20分钟超爽视频 | 成为性瘾网黄的yy对象后 | 欧美视频免费看欧美视频 | 琪琪午夜伦理影院7777 | 麻豆精品国产精华精华液好用吗 | 青青草华人在线视频 | 337p粉嫩大胆噜噜噜噜69影视 | 黄色三级视频 | 色啪视频 | 一区二区在线免费 | 日本三级精品 | 超碰天天操 | 日本久久亚洲 | 亚洲天堂小视频 | 日本大奶视频 | 瑟瑟视频免费看 | 就要操av | 韩国av网 | 本站只有精品 | 国产碰碰 | 国产亚洲精品久久久久婷婷瑜伽 | 成人香蕉视频 | 老子午夜影院 | 日日躁夜夜躁狠狠躁 | a级网站在线观看 | 国产电影免费观看高清完整版视频 | 国产八区 | 修女也疯狂3免费观看完整版 | 狂野欧美性猛交xxⅹ李丽珍 | 天堂少妇| 亚洲精品一区二区三区婷婷月 | 色小姐综合网 | 亚洲国产一区二区三区在线观看 | 五月天青青草 | 成人性免费视频 | 麻豆av免费 | 玖玖视频网 | 国产裸体网站 | 伊人天天操| 久久久久久久久久艹 | 国语对白做受xxxxx在线中国 | 成年人的免费视频 | 美乳人妻一区二区三区 | 免费看的黄色录像 | 91视频国产一区 | 国产午夜福利片 | 尤物国产在线 | 91免费污视频 | 少妇人妻综合久久中文字幕 | 五月依人网 | 狠狠操夜夜操 | 大咪咪av | 1515hh成人免费看 | 五月婷婷网站 | 亚洲午夜激情视频 | 亚洲中文无码久久 | 亚洲精品日韩在线观看 | 欧美日韩a | 99热精品国产 | 永久av免费在线观看 | 国产乱人伦精品一区二区 | 少妇粉嫩小泬白浆流出 | 九九热视频在线免费观看 | 午夜av网址 | 成人动漫免费在线观看 | 性视频播放免费视频 | 手机电影在线观看 | 国产美女精品视频国产 | 久久理论视频 | 日韩人妻精品一区二区三区视频 | a级片一级片 | 欧美一级爱爱 | 久久久资源 | 欧美性生活网 | 欧美一级啪啪 | 久久国产精品二区 | 日韩激情国产 | 视频丨9l丨白浆 | 国内精品国产三级国产aⅴ久 | 国产精品美女av | 女人张开腿让男人桶爽 | www.jizz国产| av在线导航 | 国产成人av一区 | 久久久久中文字幕亚洲精品 | 97色涩 | 人妻少妇久久中文字幕 | 成人深夜小视频 | 国产资源网 | 香蕉视频色版 | 好男人网站 | 国产白嫩美女无套久久 | 午夜精品网站 |