會話(session)bean的介紹
會話bean
能夠完成客戶所需要的業務操作。作為業務物件,會話
bean
能夠實現業務邏輯,業務規則,演算法,工作流等。比如會話
bean
能夠完成查價,訂單登記,食品壓縮,銀行事務,**交易,資料庫操作,複雜計算等。而且會話
bean
是可重用的元件,供操作業務流程中的邏輯使用。
會話bean的生命週期
會話bean
不是持久化的,它僅僅是記憶體物件,會話
bean
不會儲存到持久化儲存源中,一旦其生存的周邊環境遭到破壞,會話
bean
也將不復存在。通常客戶會話的(
client session
)的持續其決定了使用的會話
bean
的存活期,如果客戶超時
ejb容器將銷毀會話
bean
例項,會話
bean
例項是存活短暫的物件,並且會話
bean
例項不能夠在多客戶間共享。
會話bean的子型別
會話bean
有兩種子型別:有狀態會話
bean
和無狀態會話
bean
有狀態會話bean
實現例項池功能:
ejb容器為了限制記憶體中執行的有狀態會話
bean
例項的數量,
ejb容器需要將有狀態會話
bean
的會話狀態儲存到硬碟或者其它儲存源中,該過程稱之為掛起
(passivation)
。在掛起有狀態會話
bean
後,會話狀態會被安全的儲存下來,而且其釋放的記憶體可以供其他應用(或
ejb例項)使用。一旦被掛起的有狀態會話
bean
例項的客戶再次呼叫它,被掛起的會話狀態將重新回到有狀態的會話
bean
例項中,該過程稱之為啟用(activation)。現在有狀態會話
bean
例項恢復了同原先客戶的會話。但是啟用的有狀態會話
bean
例項不一定是服務於原先客戶的那個例項,但並不影響使用。
ejb例項也具有有狀態會話
bean
的例項池功能,在處理多個併發客戶時,只需要在記憶體中存活若干個有狀態會話
bean
例項。代價是掛起和啟用過程將導致
i/o效能瓶頸。維護無狀態會話
bean
例項池是十分簡單的,因為沒有會話狀態需要維護。無狀態會話
bean
不存在掛起和啟用操作,
ejb容器可以隨心所欲的銷毀它。
ejb容器會掛起和啟用哪個有狀態會話
bean
例項?
這取決於
ejb容器。
大部分容器使用最近最少使用(
least recently used lru
)策略,及簡單的掛起最近沒有使用到的有狀態會話
bean
例項。如果有狀態會話
bean
例項最近沒有使用到,則
ejb容器會掛起它,從而將會話狀態儲存到硬碟上。只要有狀態會話
bean
例項沒有參與到客戶請求中,容器就能夠隨時掛起它。
為啟用有狀態會話
bean
例項,大部分
ejb容器都會使用
just-in-time
演算法,即只有在客戶請求到來時,才會啟用有狀態會話
bean
例項。如果客戶請求傳到
ejb容器中,而且容器已經掛起了該客戶的會話狀態,則容器馬上啟用它,從而將掛起狀態資訊寫到記憶體中。
EJB 學習筆記之 會話Bean
企業bean是實現ejb技術的j2ee元件。企業bean在ejb容器中執行 何時需要使用企業bean 如果你的應用程式符合以下的任一條件,你就應該考慮使用企業bean 你的應用程式需要不斷的公升級。為了適應不斷增長的使用者,你可能需要將你的應用程式元件分布在多台不同的機器上執行。雖然並不僅僅是企業b...
EJB中有狀態會話Bean的理解
想要理解ejb的有狀態的會話bean,我們可以先來看下session是如何儲存客戶端的狀態的。假設有多個客戶端來訪問同乙個伺服器,那麼伺服器是如何來區分這些不同的客戶端呢?我們知道伺服器回返回乙個jsessionid給客戶端,客戶端將這個jsessionid寫到客戶端的cookie中。每次客戶端向伺...
EJB學習筆記 3
由於這段時間忙於結束現在的工作和找工作,所以很久沒寫日誌了,今天先補上這一篇,這一次的學習筆記主要是針對 mastering ejb 中的第4,5章講session bean的部分。之前的筆記已經介紹過session bean的主要作用是處理一些業務流程,比如下定單,出貨等等。這篇日誌對sessio...