EJB規範的三種Bean

EJB規範的三種Bean
EJB規範中定義了三種Bean,他們分別是會話Bean(Session Bean),實體Bean(Entity Bean),消息驅動Bean(MessageDrive Bean)。這三種Bean各自有各自的特點,並且他們分別應用於不同的情況,下面我們將就這三種Bean進行較爲詳細的介紹。
1.      會話Bean。一個會話bean表示的是應用服務器中的單個客戶程序,它被用來實現一個具有特定客戶業務邏輯的事務對象。我們可以簡單的理解爲一個會話Bean完成一個用戶功能。也正是因爲多個用戶可能在相同的時間執行相同的功能,並且每個用戶執行相同功能後所返回的結果可能是不一樣的,所以每個會話Bean只能特定的屬於一個客戶程序,但是會話Bean不是持久的,當一個客戶程序終止的時候,會話Bean的生命週期就結束了,與客戶程序再無關聯。會話Bean有根據是否爲特定的客戶程序保存狀態分爲有狀態的會話Bean和無狀態的會話Bean。
a)        有狀態的會話Bean 是客戶應用程序的擴展。代表客戶程序執行任務並維護該程序的相關狀態,該狀態稱爲會話狀態。在有狀態會話Bean中調用的方法既可以從該會話狀態中讀取數據,也可以將數據寫入該狀態中。並且本次會話的狀態由該會話Bean調用的所有方法共享。那麼什麼是有狀態會話Bean的的狀態呢?有狀態會話Bean的狀態是由該會話Bean實例中的變量組成的,該狀態在客戶程序和Bean進行會話期間被保持,如果客戶程序終止,則會話終止,狀態也就消失了。
b)        無狀態會話Bean不爲特定的客戶程序保持會話狀態。它僅僅是一組類似於批處理的批處理的相關服務,每一服務由一個方法來表示。當我們調用無狀態會話Bean的方法時,它執行該方法並返回結果,而無需知道或關心在此之前或之後發生了和中其他情趣,其狀態也僅僅在方法調用的時候存在(有狀態的會話Bean的狀態是會話進行過程中存在而不是在方法調用過程中存在),當方法完成後其狀態就不再被保存了。
2.      實體Bean是可以存儲在持久存儲介質上的持久對象。實體Bean常用來表示永久性數據並提供操作這些數據的方法。一般情況下一個實體Bean對應着數據庫中的一張表,而一個實體類的實例對應着這張表中的一條記錄。
實體Bean和會話Bean的最大區別在於實體Bean具有持久性,允許共享訪問和主鍵的特性。實體Bean的狀態保存在數據庫中,可以被多個客戶程序共享,每個實體Bean都有一個成爲主鍵的唯一對象標識。
3.      消息驅動Bean。消息驅動Bean允許J2EE應用程序異步的接收Java消息服務(JMS)的消息。消息驅動Bean包含處理接受到的消息的事務邏輯,主要作用是處理消息。它與其他Bean(實體Bean和會話Bean)的區別主要在於以下幾點:
a)        消息驅動Bean沒有任何接口,客戶程序不是通過接口來訪問消息驅動Bean的,它處理的消息可以來自任何消息客戶程序。
b)        消息驅動Bean類似於無狀態會話Bean,是沒有狀態的,它的實例不保持特定客戶程序的會話狀態。
c)        消息驅動Bean不需要返回任何數值給他的客戶程序,也不能向客戶程序返回異常,因爲消息驅動Bean是異步地處理消息的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章