我已閱讀關於使用@Stateful
和@SessionScoped
annonations的不同文章,其中包括this後的差異。從定義的角度來看,@sessionScoped
用於在客戶端/網絡層之間需要/創建會話/創建,而Bussiness Logic層需要@Stateful
。但是在實施它們時,我仍然沒有認識到真正的差異。下面是一個簡單的例子@stateful和@sessionScoped - 區別以及何時正確使用它們?
@Named
@SessionScoped
ShoppingCartUIBean {
@inject
shoppingCart cart;
// more code
}
@Stateful
ShoppingCart {
//business logic of adding/updating/deleting cart items
}
- 如何HTTP會話由
@SessionScoped
豆給定用戶和服務器之間保持? 也就是說,如果我在不同的計算機上打開購物車,我應該能夠看到與我的用戶配置文件關聯的購物車。這是如何建立的? - 如果我在上面的bean上切換兩個
annonations
,會發生什麼情況?它會有什麼作用? (對不起,這可能聽起來很愚蠢,我正在進入Java EE世界,所以我想讓基礎知識正確)。 - 根據Differences : @SessionScoped vs @Stateful and @ApplicationScoped vs @Singleton這篇偉大的文章,@Stateful beans很少用於Web應用程序。有沒有這種情況下,
@Stateful
是絕對必要的? - 相關說明:將
@stateful
豆注入@ApplicatonScoped
bean是否合法?這意味着整個應用程序只有一個@stateful
bean,所有客戶端都通過代理使用同一個有狀態bean的實例。 (正如在這裏證明的,不要在servlets
EJB example for stateless and stateful beans difference中注入@Stateful
)。
感謝。
我認爲你的第四點是錯誤的。對於所有不同的會話,這是一個單一會話bean。單一會話永遠不會被破壞.. – 2014-10-09 18:02:56