Я читал разные статьи об использовании @Stateful
и @SessionScoped
аннотации и их отличия, включая this post. Из точки определения используется @sessionScoped
, когда сеанс необходим/создан между уровнем клиент/web, а @Stateful
необходим в слое бизнес-логики. Но я до сих пор не понимаю реальных различий, когда речь заходит о их реализации. Вот простой пример@stateful и @sessionScoped - разница и когда использовать их правильно?
@Named
@SessionScoped
ShoppingCartUIBean {
@inject
shoppingCart cart;
// more code
}
@Stateful
ShoppingCart {
//business logic of adding/updating/deleting cart items
}
- Как это Http сессия поддерживается
@SessionScoped
боба между заданным пользователем и сервером? То есть, если у меня есть корзина для покупок, открытая на разных компьютерах, я должен иметь возможность видеть мою корзину покупок, связанную с моим профилем пользователя. Как это установлено? - Что произойдет, если я переключу два
annonations
на вышеуказанные бобы? будет ли это иметь какой-либо эффект? (извините, это может звучать глупо. Я попадаю в мир Java EE, поэтому я хочу, чтобы основы были правильными). - Согласно этому замечательному сообщению на Differences : @SessionScoped vs @Stateful and @ApplicationScoped vs @Singleton, @Stateful beans вряд ли используются в веб-приложениях. Есть ли случай, когда
@Stateful
абсолютно необходим? - ON Соответствующая записка: легально ли вводить фасоль
@stateful
в@ApplicatonScoped
bean? Это означало бы, что у всего приложения есть один бонус@stateful
, и все клиенты используют один и тот же экземпляр одного компонента состояния через прокси. (Как показано здесь, не вводить@Stateful
вservlets
EJB example for stateless and stateful beans difference).
Спасибо.
Я думаю, что ваш 4-й пункт неправильный. Это единый сеанс для всех разных сеансов. Единая сессия никогда не будет уничтожена. –