EJB技術(shù)有賴于2種重要技術(shù)的存在:Java RMI-IIOP和JNDI.EJB客戶僅僅同其暴露的單一接口進(jìn)行交互。其中暴露的接口
和企業(yè)Bean本身必須遵循EJB規(guī)范。EJB規(guī)范要求企業(yè)Bean暴露若干所要求的方法,而這些暴露的方法是供EJB容器統(tǒng)一管理他
們使用的,無論EJB組件部署在何種EJB容器中。
EJB2.1規(guī)范定義了3種EJB組件類型。
會(huì)話Bean:會(huì)話Bean用于建模業(yè)務(wù)過程。即為完成某些任務(wù)而存在。
實(shí)體Bean:實(shí)體Bean用于建模業(yè)務(wù)數(shù)據(jù)。他們是數(shù)據(jù)對(duì)象。實(shí)體Bean是用于緩存數(shù)據(jù)庫信息的Java對(duì)象。
消息驅(qū)動(dòng)Bean:MDB類似于會(huì)話Bean,因?yàn)樗鼈兌际菫橥瓿赡承┤蝿?wù)而存在的。
EJB組件是基于分布式對(duì)象構(gòu)建的,遠(yuǎn)程系統(tǒng)能夠調(diào)用分布式對(duì)象。當(dāng)然,進(jìn)程內(nèi)的客戶、進(jìn)程外的客戶及網(wǎng)絡(luò)中的其他
客戶都能夠與分布式對(duì)象進(jìn)行交互。具體過程如下:
客戶調(diào)用存根:即為客戶端提供的代理對(duì)象。存根負(fù)責(zé)將網(wǎng)絡(luò)通信屏蔽掉,這對(duì)于客戶而言意義深遠(yuǎn)。存根能夠使用
Socket訪問網(wǎng)絡(luò)中的其他資源,其間將調(diào)用所需的參數(shù)構(gòu)建成網(wǎng)絡(luò)要求的調(diào)用格式。
借助于網(wǎng)絡(luò):存根能夠?qū)崿F(xiàn)與服務(wù)器端的骨架進(jìn)行交互。骨架是為服務(wù)器端提供的代理對(duì)象。骨架負(fù)責(zé)將網(wǎng)絡(luò)通信屏蔽
掉,這對(duì)于分布式對(duì)象而言意義深遠(yuǎn)。骨架能夠處理來自Socket的訪問請(qǐng)求。當(dāng)然,骨架還能夠?qū)⒋娓鶚?gòu)建好的參數(shù)轉(zhuǎn)換成
Java表示。
骨架將具體的客戶調(diào)用委派給合適的分布式對(duì)象實(shí)現(xiàn)。因此,該對(duì)象將完成具體的訪問請(qǐng)求,并將結(jié)果返回給骨架。依
此類推,骨架將結(jié)果返回給存根,最后客戶將獲得分布式對(duì)象的響應(yīng)結(jié)果(通過存根獲得)。
重要:存根和服務(wù)器端實(shí)現(xiàn)的對(duì)象都實(shí)現(xiàn)了同一接口(稱之為遠(yuǎn)程接口)。其意味著存根克隆了分布式對(duì)象的方法簽名。
調(diào)用存根中的方法的客戶以為其自身直接調(diào)用了分布式對(duì)象,但實(shí)際情況是客戶直接調(diào)用存根,而存根處理具體的網(wǎng)絡(luò)訪問
工作。因此,這可以稱之為分布透明性。
分布式對(duì)象是對(duì)如下幾個(gè)協(xié)作對(duì)象的一種抽象:存根、骨架、實(shí)現(xiàn)的對(duì)象,單一的參與者不可能構(gòu)成分布式對(duì)象。
分布式對(duì)象是很誘人的,因?yàn)殚_發(fā)者能夠基于網(wǎng)絡(luò)構(gòu)建應(yīng)用。在開發(fā)大型的分布式對(duì)象應(yīng)用的時(shí)候,需要借助于中間件
服務(wù),如事務(wù)和安全性。
遠(yuǎn)程對(duì)象:
(1)、企業(yè)Bean的業(yè)務(wù)邏輯需要在Bean類中實(shí)現(xiàn)。EJB規(guī)范定義了企業(yè)Bean類待實(shí)現(xiàn)的若干接口。這些接口使得所有的企
業(yè)Bean類能夠暴露同一套接口。各種企業(yè)Bean的Bean類都需要實(shí)現(xiàn)javax.ejb.EnterpriseBean接口。
當(dāng)然,EJB規(guī)范分別為會(huì)話Bean、實(shí)體Bean和消息驅(qū)動(dòng)Bean提供了更專屬的接口類型,
SessionBean,EntityBean,MessageDriverBean.
(2)、當(dāng)客戶使用企業(yè)Bean類的某實(shí)例時(shí),它并不是直接調(diào)用Bean類的方法,EJB容器將攔截客戶調(diào)用,然后委派給企業(yè)
Bean實(shí)例。通過攔截客戶請(qǐng)求,EJB容器能夠自動(dòng)操作隱式中間件服務(wù)。
因此,在客戶和EJB組件間,引入了間接層,即EJB容器。引入的間接層將自身封裝為單一的網(wǎng)絡(luò)使能對(duì)象,即EJB對(duì)象,
EJB對(duì)象正是請(qǐng)求攔截器。EJB對(duì)象是代理對(duì)象,它可以與網(wǎng)絡(luò)、事務(wù)、安全性等進(jìn)行交互。企業(yè)Bean客戶調(diào)用EJB對(duì)象提供的
方法,而不是企業(yè)Bean本身。因此,EJB對(duì)象必須復(fù)制企業(yè)Bean類暴露的業(yè)務(wù)方法。但是,自動(dòng)生成EJB對(duì)象的工具是怎么知
道業(yè)務(wù)方法的呢?答案是,通過企業(yè)Bean提供者提供的接口來實(shí)現(xiàn),即遠(yuǎn)程接口。這個(gè)接口復(fù)制企業(yè)Bean類暴露的業(yè)務(wù)方法。
EJB容器負(fù)責(zé)管理EJB組件,通過調(diào)用EJB組件提供的回調(diào)方法,EJB容器能夠同EJB組件交互。這些回調(diào)方法僅供EJB容器管理
EJB組件使用。
EJB容器最為重要的一項(xiàng)工作是,提供EJB組件運(yùn)行的環(huán)境。EJB容器宿主了EJB組件,從而供遠(yuǎn)程客戶調(diào)用。因此,可以
認(rèn)為EJB容器充當(dāng)了客戶和EJB組件的中間人。EJB容器負(fù)責(zé)將客戶連接到EJB組件,完成事務(wù)協(xié)調(diào)工作,提供持久化能力,管
理EJB組件的聲明周期及其他任務(wù)。
EJB的遠(yuǎn)程接口還需復(fù)制企業(yè)Bean類的業(yè)務(wù)方法。一旦企業(yè)Bean客戶調(diào)用業(yè)務(wù)方法,EJB對(duì)象將把調(diào)用操作委派給相應(yīng)的
Bean類。
(3)、Java RMI-IIOP和EJB對(duì)象:javax.ejb.EJBObject繼承于java.rmi.Remote.任何實(shí)現(xiàn)了Remote接口的對(duì)象都是遠(yuǎn)程
對(duì)象,即能夠從其他JVM中訪問到它,這就是Java實(shí)現(xiàn)RMI方式。由于容器提供的EJB對(duì)象實(shí)現(xiàn)了EJB組件的遠(yuǎn)程接口,因此EJB
對(duì)象也間接實(shí)現(xiàn)了java.rmi.Remote接口。EJB對(duì)象是具有完整網(wǎng)絡(luò)功能的RMI-IIOP對(duì)象,供其他JVM或者網(wǎng)絡(luò)中其他物理機(jī)器
訪問。實(shí)際上,EJB遠(yuǎn)程接口僅僅是RMI-IIOP遠(yuǎn)程接口,只不過它還遵循EJB規(guī)范罷了。
遠(yuǎn)程接口還必須遵從RMI-IIOP的參數(shù)傳遞約定。并不是所有的內(nèi)容都能夠跨越JVM傳遞的。方法中傳遞的參數(shù)必須是符合
RMI-IIOP約定的有效Java類型,如Java原型、序列化對(duì)象和RMI-IIOP對(duì)象。
總之,EJB容器需要負(fù)責(zé)權(quán)衡資源管理和管理已部署EJB組件的生命周期。
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
27 | 28 | 29 | 30 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 | |||
11 | 12 | 13 | 14 | 15 | 16 | 17 | |||
18 | 19 | 20 | 21 | 22 | 23 | 24 | |||
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 |
常用鏈接
留言簿(1)
隨筆分類
- EJB學(xué)習(xí)筆記(13)
- HIBERNATE(25)
- J2SE(1)
- JAVASCRIPT
- SOA
- SPRING(16)
- WEBWORK
- 人生隨筆(7)
- 開發(fā)實(shí)踐
- 設(shè)計(jì)思想(4)
- 財(cái)經(jīng)新聞
隨筆檔案
關(guān)注blogs
- Anders小明的Blog
- DWR學(xué)習(xí)手冊(cè)
- IBM解決方案
- j2ee api
- JavaEye Java
- java技術(shù)賽迪網(wǎng)
- jdk詳解
- J道論壇
- mldn解惑
- robbin的自言自語
- SpringFramework中文論壇
- validation詳細(xì)解釋
- 一只小螞蟻
- 中國it實(shí)驗(yàn)室
- 啊密果
- 當(dāng)當(dāng)網(wǎng)
- 林信良學(xué)習(xí)筆記
- 灰狐動(dòng)力
- 鼠標(biāo)的咖啡屋
搜索
最新評(píng)論

- 1.?re: 心中的那個(gè)她[未登錄]
- 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
- --王永慶
- 2.?re: 心中的那個(gè)她[未登錄]
- 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會(huì)有不愉快,如果想一輩子沒有這些煩惱,找一個(gè)可有可無的人就好了。這種事講的是緣分吧。別人對(duì)你好不好其實(shí)不太重要。放開心情就好了。
- --萍水相逢
- 3.?re: 心中的那個(gè)她
- 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
- --咖啡妝
- 4.?re: 難以割舍的那份情感
- 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
- --王永慶
- 5.?re: 難以割舍的那份情感
- 評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
- --隔葉黃鶯