ejb的生命週期

2021-04-13 09:38:35 字數 1678 閱讀 6000

在做企業業務繼承的時候,通常利用session進行提供同步的遠端過程服務.通過eai等q元件,實現企業級的資料匯流排,把應用之間的網狀結構關係進行星型化..利用mdb從jms(q)伺服器上獲取相應的訊息服務.總之在企業資訊化的過程中,基於j2ee的應用整合,ejb提供了一種良好的方法,當然你也可以選擇websevice,但是在網路結構和實時處理效率上還是有很大的差別.下面詳細描述以下三種ejb的生命週期,在開發中和利用他的容器**功能,來注入和**外部的各種資源。

1 session bean (有狀態)

有狀態會話bean例項有三種狀態,不存在,就緒,和鈍化。

客戶端呼叫home介面的create 方法,ejb容器例項化乙個bean並呼叫setsesssioncontext

ejbcreate方法,使得bean處於就緒狀態。然後客戶就可以使用其商業方法了。ejb容器對bean的生命週期

進行管理,一般會對最少使用的ejb進行鈍化,當客戶在使用這個ejb時,容器會進行啟用,這個過程對客

戶來說是透明的。當使用者呼叫remove方法,容器呼叫ejbremove方法,ejb生命週期結束.

無狀態會話bean例項就兩種狀態,不存在和就緒.

客戶端呼叫home介面的create方法,如果不存在可用的例項.jb容器例項化乙個bean並呼叫

setsesssioncontext ejbcreate方法.當客戶呼叫remove方法之後,ejb容器則呼叫ejbremove的方法, 

ejb生命週期結束.

2 實體bean

實體bean有三種狀態,不存在,在pool中,就緒

ejb容器建立例項時呼叫setentitycontext,把容器的上下文傳到bean元件中.例項化之後bean

會移到池中,此時ejb沒有和任何的實體物件進行關聯,所有的bean例項是一樣,容器會指派它和具體的

實體標示關聯,進入就緒狀態。有兩種方法使得乙個實體bean從池化進入到就緒狀態,一是客戶端使用

create方法,使得ejb容器呼叫ejbcreate and ejbpostcreate 方法,二是容器呼叫ejbactivate 方法,

這對客戶來說是透明的,只有當實體bean處於就緒狀態時,才能呼叫其商業方法。同樣如果實體bean要從

就緒進行池化也有兩種方法,一是客戶端呼叫remove方法,容器呼叫ejbremove;二是容器ejbpassivate方法。

bmp和cmp,在bean例項從池化到就緒時,對於bmp的實體bean,容器不會自動設定primary key.因此ejbcreate and ejbactivate 需要獲得這個primary key ,如果這個key非法,ejbload and ejbstore methods 不能同步實體變數到資料庫。ejbcreate 通過引數傳入,ejbactivate 通過id = (string)context.getprimarykey();在pool狀態,這些需要持久化的實體變數則不需要,在ejbpasssivate 中把它賦值null。unsetentitycontext,

bean生命週期結束的時候,呼叫

3 mdb 訊息bean

訊息bean就兩種狀態:不存在和就緒

就像sessionless session bean,容器在例項化bean的時候,呼叫setmessagedrivencontext,ebjcreate. 呼叫ejbremove方法結束生命週期。當訊息到達的時候onmessage方法。因此可以mdb是一種jms客戶端企業級元件。

EJB 各種bean的生命週期

ejb有 entity bean,session bean,md bean.其實entity bean 是隨便伺服器啟動而初始化,隨著伺服器關閉而銷毀。md bean作為jms的消費端,不包含客戶端狀態,它的生命週期有ejb容器用物件池管理管理。所以應該是當jms端訪問md bean時候 可能會建立...

React 生命週期 生命週期方法

生命週期 掛載 更新 解除安裝 元件被建立 執行初始化 並被掛載到dom中,完成元件的第一次渲染 constructor props getderivedstatefromprops props,state render componentdidmount 元件被建立時會首先呼叫元件的構造方法,接受...

actived生命週期 Vuejs 生命週期

每個 vue 例項在被建立時都要經過一系列的初始化過程。如需要設定資料監聽 編譯模板 將例項掛載到 dom 並在資料變化時更新 dom 等。同時在這個過程中也會執行一些叫做生命週期鉤子的函式,這給了使用者在不同階段新增自己的 的機會。乙個 vue 例項 我們建立乙個 vue 例項,並在每個階段驗證 ...