2011-02-12 113 views
0

我正在閱讀關於JSF2和託管豆。我有一個關於鈍化的問題。會話範圍Managed Bean鈍化

我最近問的@Stateful EJB的,@SessionScoped@ManagedBean這裏不同的使用情況:

sessionscoped managed bean vs stateful ejb

現在,有狀態EJB有資格進行鈍化和激活,它們可以暫時鈍化爲持久性存儲以減少空閒時的內存使用量,但我還沒有看到這個功能可用於managedbeans。所以它讓我想到,也許我應該去買@RequestScoped Managed Beans,而更喜歡@Stateful用於購物車的EJB。僅使用@Sessionscoped Managed Beans來存儲最少的用戶信息。

這是正確的嗎?有沒有一些指導方針呢?

回答

2

請求範圍的託管bean在這裏不起作用。要訪問特定的有狀態會話bean實例,您需要它的存根。

如果您要使用請求作用域託管bean,那麼將無法存儲此存根控件,並且您將獲得每個請求的新實例。這完全擊敗了首先使用有狀態會話bean的原因。

但是,您可以使用視圖範圍的JSF託管bean(如果操作發生在單個頁面上)或對話範圍的CDI bean(如果操作發生在多個頁面上)。特別是對於後者,您可以將對話的範圍與有狀態會話bean的生命週期相關聯。

請注意,所有這些都需要對Java EE至少有一箇中等的理解。如果您對有狀態會話bean的鈍化沒有注意(例如,從不調用@Remove註釋的方法),它將逐漸消耗服務器的硬盤空間。

+0

所以你建議我去對話範圍的bean而不是會話bean的權利?我想到了這一點。但即使現在我對有狀態的EJB有了更好的理解,但它們似乎每次都變得越來越無用。除了擴展的持久化上下文外,我無法想到在Web應用程序中使用它們。 – arg20 2011-02-14 00:44:45

相關問題