最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2016年07月23日 09:37:08   投稿:jingxian  
下面小編就為大家?guī)硪黄狫2EE基礎(chǔ)之EJB全面了解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1、什么是EJB?

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

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

2、EJB容器及組件間通信

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

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

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

圖一:EJB容器工作原理

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

圖二:EJB組件間通信原理

3、EJB分類

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

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

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

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

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

 

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

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

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

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

 

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

6、單間會(huì)話Bean

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

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

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

圖五:?jiǎn)渭?huì)話Bean的生命周期   

7、消息驅(qū)動(dòng)Bean

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

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

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

以上這篇J2EE基礎(chǔ)之EJB全面了解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • springboot中使用rabbitt的詳細(xì)方法

    springboot中使用rabbitt的詳細(xì)方法

    這篇文章主要介紹了springboot中使用rabbitt,通過本文學(xué)習(xí)讓我們了解如何在Spring Boot中使用RabbitMQ,并使用不同的交換機(jī)和隊(duì)列類型以及消息確認(rèn)模式,需要的朋友可以參考下
    2023-05-05
  • Spring如何使用注解的方式創(chuàng)建bean

    Spring如何使用注解的方式創(chuàng)建bean

    這篇文章主要介紹了Spring如何使用注解的方式創(chuàng)建bean,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • JavaBean和Map轉(zhuǎn)換封裝類的方法

    JavaBean和Map轉(zhuǎn)換封裝類的方法

    下面小編就為大家?guī)硪黄狫avaBean和Map轉(zhuǎn)換封裝類的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java多線程編程之使用Exchanger數(shù)據(jù)交換實(shí)例

    Java多線程編程之使用Exchanger數(shù)據(jù)交換實(shí)例

    這篇文章主要介紹了Java多線程編程之使用Exchanger數(shù)據(jù)交換實(shí)例,本文直接給出實(shí)例代碼,需要的朋友可以參考下
    2015-05-05
  • SpringBoot項(xiàng)目上高并發(fā)問題的解決方案

    SpringBoot項(xiàng)目上高并發(fā)問題的解決方案

    本章演示在springboot項(xiàng)目中的高并發(fā)demo,演示導(dǎo)致的問題,以及單機(jī)部署下的解決方案和集群部署下的解決方式以及分布式下的解決方案,文中通過圖文結(jié)合的方式講解的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • springboot切換使用undertow容器的方式

    springboot切換使用undertow容器的方式

    最近稍微有點(diǎn)空閑,回頭再來優(yōu)化下基礎(chǔ)框架,也是一種重新學(xué)習(xí)。今天主要寫寫跟大家分享下springboot使用undertow,廢話不多說
    2022-07-07
  • java如何通過流讀取圖片做base64編碼

    java如何通過流讀取圖片做base64編碼

    這篇文章主要介紹了java如何通過流讀取圖片做base64編碼問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法具體介紹

    Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法具體介紹

    這篇文章主要介紹了Springboot與vue實(shí)現(xiàn)數(shù)據(jù)導(dǎo)出方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Java格式化類Format解讀

    Java格式化類Format解讀

    Java.text.Format 是 Java 格式化的抽象基類,用于將對(duì)象格式化為指定模式的字符串,或者將指定模式的字符串解析為對(duì)象,主要包含 format 和 parseObject 方法,分別用于格式化和解析
    2024-12-12
  • 通過Java帶你了解網(wǎng)絡(luò)IO模型

    通過Java帶你了解網(wǎng)絡(luò)IO模型

    這篇文章將通過Java帶大家了解網(wǎng)絡(luò)IO模型,包括BIO,NoBlockingIO,NIO(NewIO),AIO等做了詳細(xì)得介紹,感興趣的小伙伴可以參考閱讀本文
    2023-05-05

最新評(píng)論

陕西省| 巴楚县| 建湖县| 通山县| 赤水市| 鄄城县| 革吉县| 翁牛特旗| 治县。| 上饶县| 长宁县| 汕头市| 新绛县| 灵山县| 崇州市| 邵东县| 拜城县| 襄汾县| 出国| 长泰县| 马公市| 临桂县| 乌兰察布市| 林芝县| 灵璧县| 延长县| 吴川市| 平谷区| 德格县| 南澳县| 枣强县| 肃宁县| 河源市| 兴国县| 宜兴市| 辽阳市| 双牌县| 乌鲁木齐县| 嵊泗县| 类乌齐县| 永和县|