1、會話Bean
用于實現(xiàn)業(yè)務邏輯,分為有狀態(tài)Bean和無狀態(tài)Bean,有狀態(tài)Bean可以維護會話狀態(tài),無狀態(tài)Bean不維護會話狀態(tài)。要維護會話狀態(tài),意味著EJB容器要為每個用戶創(chuàng)建一個Bean實例,并通過該實例保存著與用戶的會話狀態(tài)。不維護會話狀態(tài),意味著一個bean實例不需要保存與某個用戶的會話狀態(tài),這時一個bean實例可以為多個用戶服務。每當客戶端發(fā)出EJB調(diào)用請求,容器就會選擇一個Session Bean來為客戶端服務。會話Bean可以直接訪問數(shù)據(jù)庫,但更多時候它是通過實體Bean實現(xiàn)數(shù)據(jù)訪問。
開發(fā)一個Session Bean,需要定義接口和Bean Class。接口分為遠程(Remote)和本地(Local)接口,EJB3.0中不需兩者都實現(xiàn),但兩者都實現(xiàn)比較好。
遠程接口:定義了Session Bean的業(yè)務方法,這些方法可以被EJB容器之外的應用訪問到。
本地接口:定義了Session Bean的業(yè)務方法,這些方法可以被同處于EJB容器內(nèi)的其他應用使用。因為Local接口允許bean之間直接通過內(nèi)存交互,沒有分布式對象協(xié)議的開銷,從而改善了性能。
Bean類(bean class):包含了業(yè)務邏輯,必須具備一個遠程或本地接口。在bean里我們應該實現(xiàn)接口的業(yè)務邏輯,盡管不是必須的,但我們沒有理由不這么做。
2、實體Bean
代表真實物體的數(shù)據(jù),在EJB3.0中,它僅作為普通Java對象來使用,它負責跟數(shù)據(jù)庫表進行對象與關(guān)系映射(O/R Mapping)。如果實體Bean對象需要返回客戶端,必須實現(xiàn)Serializable接口。
3、消息驅(qū)動Bean(MDB)
是設(shè)計用來專門處理基于消息請求的組件。它能夠收發(fā)異步JMS消息,并能夠輕易地與其它EJB交互。它特別適合用于當一個業(yè)務執(zhí)行的時間很長,而執(zhí)行結(jié)果無需實時向用戶反饋的這樣一個場合。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。