2010-11-28 41 views
12

我需要一些說明。我知道如何使用JSF及其相應的會話bean,但我對EJB感到困惑。 EJB引入的bean和JSF使用的會話bean之間有什麼區別(對於ejb我知道無狀態/完整會話bean和實體bean,實體管理器等)。我只是不知道何時使用EJB以及何時使用jsf bean。除了實體bean之外,ejb有狀態/較少會話bean看起來與jsf會話bean相似。我已經閱讀了關於注入ejb到jsf,但爲什麼不只是與jsf bean一起使用ejb?我希望你能理解我的困惑。謝謝。jsf beans和ejb beans之間的區別

回答

6

Java EE中不同類型的託管bean之間確實存在一些混淆。爲了增加混淆,Java EE 6引入了第三種託管bean:一個CDI bean。

在這個答案,我試圖解釋的異同一點:How do CDI and EJB compare? interact?

簡單說,JSF管理的bean主要是不提供交易支持,這是你的業務邏輯工作時,經常需要一些東西,特別是JPA。

另請注意,術語session與會話作用域託管bean中的術語完全不同,它與無狀態和有狀態會話bean中的術語所指的類型完全不同。

7

Alexis

您首先需要知道JSF bean和EJB bean之間的區別。

JSF Bean: JSF bean是pojo類,它用於讀取jsf的組件值。 jsf中有兩種類型的bean

託管bean是關於如何創建和初始化java bean。如你所知,jsf使用惰性初始化模型。這意味着特定作用域中的bean不是在範圍啓動時創建和初始化的,而是根據需要(即首次需要bean時)初始化的。

支持bean是關於特定託管bean的角色。這是扮演位於頁面上的組件的服務器端表示的角色。通常,支持bean有一個請求範圍,但它不是一個限制。

EJB Bean 是封裝應用程序業務邏輯的服務器端組件。業務邏輯是滿足應用程序目的的代碼。

主要有三種類型的會話的beans-

1.Statefull會話bean

2.Stateless會話bean

3.Singleton會話Bean(EJB 3.1)