Сеанс области действия Пассивация управляемого бина - PullRequest
0 голосов
/ 12 февраля 2011

Я читаю о JSF2 и Managed Beans. У меня вопрос, связанный с пассивацией.

Я недавно просил различные варианты использования @Stateful EJB, @SessionScoped и @ManagedBean здесь:

управляемый сессионный компонент против сохраняемого ejb .

Теперь EJB с сохранением состояния имеют право на пассивацию и активацию, которые позволяют временно их пассивировать в постоянное хранилище, чтобы уменьшить использование памяти во время простоя. Я не видел эту функцию доступной для управляемых компонентов. Так что у меня возникло мнение, что, возможно, я должен пойти на @RequestScoped Управляемые Бобы и вместо этого предпочесть @Stateful EJB для магазинных тележек и т.д. Использование @Sessionscoped Managed Beans только для хранения минимальной пользовательской информации.

Это правильно? Есть ли какие-то рекомендации для этого?

1 Ответ

2 голосов
/ 13 февраля 2011

Управляемый компонент в области запроса не будет работать здесь. Для доступа к конкретному экземпляру сессионного компонента с сохранением состояния вам нужна его заглушка.

Если бы вы использовали управляемые bean-объекты, управляемые запросами, не было бы места для хранения этой заглушки, и вы получите новый экземпляр с каждым запросом. Это полностью превосходит причину использования сессионных компонентов с сохранением состояния.

Однако вы можете использовать управляемый компонент JSF в области просмотра (если действие происходит на одной странице) или компонент CDI в области диалога (если действие происходит на нескольких страницах). Особенно с последним вы можете связать объем вашего разговора со временем жизни сессионного компонента с состоянием.

Обратите внимание, что все это требует, по крайней мере, промежуточного понимания Java EE. Если вы не будете осторожны с пассивацией сессионных компонентов, сохраняющих состояние (например, никогда не вызывайте аннотированный метод @Remove), он будет постепенно поглощать пространство жесткого диска вашего сервера.

...