一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務(wù)器之家 - 編程語言 - JAVA教程 - J2EE基礎(chǔ)之EJB全面了解

J2EE基礎(chǔ)之EJB全面了解

2020-05-31 13:13java教程網(wǎng) JAVA教程

下面小編就為大家?guī)硪黄狫2EE基礎(chǔ)之EJB全面了解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、什么是EJB

 EJBEnterprise Java Beans),是JavaEE中的商業(yè)應(yīng)用組件技術(shù),是JavaEE三大組件(ServletJSPEJB)之一。EJB提供了讓客戶端使用遠(yuǎn)程分布式對象的框架,極大地簡化了具有良好的可擴充性的企業(yè)級應(yīng)用的開發(fā)。EJB組件結(jié)構(gòu)是基于組件的分布式計算結(jié)構(gòu),是分布式應(yīng)用系統(tǒng)中的組件。

EJBJava服務(wù)器端服務(wù)框架的規(guī)范,為服務(wù)器端構(gòu)件系統(tǒng)定義了一個技術(shù)規(guī)范。該規(guī)范能提供一個標(biāo)準(zhǔn)的、分布式的、基于面向?qū)ο蟮捏w系結(jié)構(gòu)。它為構(gòu)件開發(fā)者和使用者屏蔽掉復(fù)雜的系統(tǒng)級底層功能實現(xiàn),使開發(fā)者專注于業(yè)務(wù)邏輯的實現(xiàn),其中一些復(fù)雜的底層服務(wù)由EJB容器負(fù)責(zé)。EJB可以根據(jù)應(yīng)用的增長而擴展,EJB服務(wù)器提供了負(fù)載平衡功能,以及資源的訪問權(quán)限控制。

2、EJB容器及組件間通信

 EJB容器為EJB組件提供了運行環(huán)境,EJB容器管理EJB的方式與Web容器管理Servlet的方式類似,EJB必須在EJB容器里運行。EJB容器主要管理了EJB的持久性、生命周期管理、安全性管理、事務(wù)管理、遠(yuǎn)程連接、并發(fā)處理、集群和負(fù)載均衡等問題。容器管理EJB組件的實例,使EJB組件實現(xiàn)最大的效能和內(nèi)存利用率。容器能夠激活和鈍化EJB組件、管理實例池等。容器負(fù)責(zé)管理分布式事務(wù)處理的復(fù)雜問題,為遠(yuǎn)程連接管理低層的通信問題,而且對EJB組件的開發(fā)者和客戶都隱蔽了通信問題。因此,EJB組件開發(fā)人員可以把精力集中于封裝商務(wù)邏輯,容器負(fù)責(zé)處理其他一切事務(wù)。EJB通過ejbContentJNDJ、回調(diào)函數(shù)等機制與容器交互。

JBoss是一個管理EJB的容器和服務(wù)器,支持EJB1.1EJB2.0EJB3的規(guī)范,其一般和TomcatJetty綁定使用。

下面請看圖一(EJB容器的工作原理圖):

J2EE基礎(chǔ)之EJB全面了解

圖一:EJB容器工作原理

EJB組件是一種分布式對象,當(dāng)它被實例化后,可以與其他地址空間中的應(yīng)用程序進行通信。EJB實例被封裝在框架(skeleton)對象中,它通過存根(stub)對象與客戶端交流。存根不包括商務(wù)邏輯,但實現(xiàn)了商業(yè)接口。每當(dāng)存根商業(yè)接口上的商業(yè)方法被調(diào)用時,存根就把網(wǎng)絡(luò)消息發(fā)送給框架,告訴它調(diào)用了哪些方法。框架調(diào)用EJB實例的相應(yīng)方法,并把EJB實例返回的結(jié)果發(fā)送給存根,由存根把這些結(jié)果再返回給相應(yīng)的應(yīng)用程序。通過存根和框架這兩個中間對象,屏蔽了分布式對象之間的復(fù)雜通信過程。框架由容器實現(xiàn),而存根由開發(fā)工具自動生成,二者都不需要編寫代碼。下面請看圖二(EJB組件通信原理圖):

J2EE基礎(chǔ)之EJB全面了解

圖二:EJB組件間通信原理

3、EJB分類

 EJB組件可以分為會話Bean和消息驅(qū)動Bean兩種。會話Bean封裝了商務(wù)邏輯,客戶端可以通過本地、遠(yuǎn)程、Web服務(wù)的方式調(diào)用會話Bean的方法來訪問部署在服務(wù)器上的應(yīng)用程序,從而調(diào)用其他Bean的方法,會話Bean不具有持久性,即它的數(shù)據(jù)不保存在數(shù)據(jù)庫里。其中會話Bean又包括有狀態(tài)會話Bean、無狀態(tài)會話Bean和單件會話Bean三種。消息驅(qū)動Bean通常用作特定類型消息的監(jiān)聽器,使JavaEE可以處理異步消息,而客戶端不會通過接口訪問消息驅(qū)動Bean

下面將依次具體介紹有狀態(tài)會話Bean、無狀態(tài)會話Bean、單件會話Bean和消息驅(qū)動會話Bean

4、無狀態(tài)會話Bean

 無狀態(tài)會話Bean只為客戶端提供商務(wù)邏輯,不為客戶端保留會話狀態(tài)。在客戶端調(diào)用無狀態(tài)會話Bean的方法時,對應(yīng)會話Bean的屬性會描述這個調(diào)用狀態(tài),但僅僅只在該方法調(diào)用期間保持這個狀態(tài)。當(dāng)方法調(diào)用結(jié)束,狀態(tài)就被清除。

無狀態(tài)會話Bean的生命周期由容器控制。當(dāng)EJB容器收到客戶端對無狀態(tài)會話Bean的請求時,如果EJB不存在,則容器會創(chuàng)建一個Bean的實例,再將需要的資源注入組件,然后容器回調(diào)PostConstruct方法,組件創(chuàng)建完畢。此時,Bean從“不存在”狀態(tài)轉(zhuǎn)換到“存在”狀態(tài)。客戶端調(diào)用結(jié)束,容器回調(diào)PreDestroy方法,Bean將被銷毀,此時,Bean從“存在”狀態(tài)轉(zhuǎn)換成“不存在”狀態(tài)。下面請看圖三(無狀態(tài)會話Bean的生命周期):

J2EE基礎(chǔ)之EJB全面了解

圖三:無狀態(tài)會話Bean的生命周期

5、有狀態(tài)會話Bean

有狀態(tài)會話Bean為用戶保留了一次會話狀態(tài),它不能像無狀態(tài)會話Bean一樣被放到組件池里讓不同用戶共享。對于有狀態(tài)會話Bean來說,只要有客戶端發(fā)送請求,容器就創(chuàng)建一個實例與該客戶端對應(yīng),一個客戶端對應(yīng)一個實例。在生存期內(nèi),有狀態(tài)會話Bean保持了用戶的信息,一旦會話結(jié)束,有狀態(tài)會話Bean的生命周期也告結(jié)束。

有狀態(tài)會話Bean有三種活動狀態(tài):不存在、活動和鈍化。當(dāng)有狀態(tài)會話Bean處于活動狀態(tài)一段時間后,如果仍然沒有收到外部客戶端的請求,為了節(jié)省系統(tǒng)資源,容器會把有狀態(tài)會話Bean中的狀態(tài)信息序列化到臨時存儲空間,并把有狀態(tài)會話Bean從內(nèi)存中移除,這個過程稱為“鈍化”。在鈍化之前,容器回調(diào)PrePassivate方法。當(dāng)容器收到對已經(jīng)被鈍化的有狀態(tài)會話Bean的請求,會重新初始化有狀態(tài)會話Bean的實例,并將狀態(tài)信息從臨時空間取出,使之重新回到活動狀態(tài),這個過程稱之為“激活”。在激活之后,容器回調(diào)ProActivate方法。當(dāng)有狀態(tài)會話Bean鈍化一段時間后,容器將徹底清除該實例,回調(diào)PreDestroy方法。下面請看圖四(有狀態(tài)會話Bean的生命周期):

J2EE基礎(chǔ)之EJB全面了解

圖四:有狀態(tài)會話Bean的生命周期

6、單間會話Bean

單件會話Bean對每個應(yīng)用程序?qū)嵗淮危⑶以趹?yīng)用程序的生命周期中一直存在。單件會話Bean為特定的情景而設(shè)計,客戶端可以以共享且并發(fā)的模式訪問這個唯一的EJB實例。

單件會話Bean與無狀態(tài)會話Bean很相似,區(qū)別在于單件會話Bean在應(yīng)用中只有一個實例,而無狀態(tài)會話Bean可以有很多實例,每一個實例都被放在組件池里,使用戶共享。

單件會話Bean像無狀態(tài)會話Bean一樣,從不鈍化。其生命周期只包含兩種狀體:“不存在”和“存在”。下面請看圖五(單件會話Bean的生命周期):

J2EE基礎(chǔ)之EJB全面了解

圖五:單件會話Bean的生命周期   

7、消息驅(qū)動Bean

消息驅(qū)動Bean是設(shè)計用來專門處理基于消息請求的組件。消息驅(qū)動Bean集成了Java消息服務(wù)(Java Message ServiceJMS)和企業(yè)Bean的功能。不能由客戶端直接獲取其引用而調(diào)用方法,只能由系統(tǒng)消息來啟動。

EJB容器通常創(chuàng)建一個消息驅(qū)動Bean的組件池。與無狀態(tài)會話Bean類似,消息驅(qū)動Bean從不被鈍化,其生命周期只包含兩個階段:不存在和存在。

 消息驅(qū)動Bean類必須實現(xiàn)MessageListener接口。當(dāng)容器檢測到Bean監(jiān)聽的隊列里的一條消息時,就調(diào)用onMessage()方法,將消息作為參數(shù)傳入。

以上這篇J2EE基礎(chǔ)之EJB全面了解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天天色综合三 | julia ann全部在线hd | 亚洲精品乱码久久久久久蜜桃 | 美女扒开腿让男人桶爽免费gif | 午夜勾魂曲 | zoomkool最新版| 国产在线观看精品 | 色哟哟精品 | 咪咪爱小说 | www.青草视频| 福利国产精品 | 调教催眠 | 男人猛激烈吃奶gif动态图 | 免费人成黄页在线观看69 | 蜜桃成人影院 | 亚色九九九全国免费视频 | 放荡警察巨r麻麻出轨小说 范冰冰特黄xx大片 饭冈加奈子在线播放观看 法国老妇性xx在线播放 | 免费看片黄色 | 国产福利不卡视频在免费 | 香蕉久久一区二区不卡无毒影院 | 免费黄色片在线观看 | 日本一本草久p | 地址二地址三2021变更 | 全肉一女n男np高h乳 | 999热这里只有精品 999久久久免费精品国产牛牛 | 免费视频完整版在线观看网站 | 成人观看免费观看视频 | 亚洲欧美精品天堂久久综合一区 | 暖暖视频高清图片免费完整版 | 亚洲性色永久网址 | 国产欧美一区二区三区久久 | 亚洲H成年动漫在线观看不卡 | 91精品91久久久久久 | 免费观看一级欧美在线视频 | 给我免费的视频在线观看 | 日本b站一卡二不卡三卡四卡 | www.色姐姐| 4455四色永久免费 | 石原莉奈adn093店长未婚妻 | 国产成人免费在线观看 | 亚洲精品青青草原avav久久qv |