Уничтожение bean-объектов видимости по окончании сеанса
Мой вопрос связан с этим (и, вероятно, с другими):
@PreDestroy никогда не вызывал @ViewScoped
Как уже говорилось, не существует тривиального решения для уничтожения bean-объектов в области видимости при навигации, и, похоже, то же самое относится и к истечению сеанса.
Какой бы нетривиальный подход к выпуску (называя @PreDestroy
method) Как выглядят bean-объекты в виде JSF, или, более конкретно, по окончании сеанса?
Я использую Java EE 6 и Mojarra 2.1.x на GlassFish 3.1.2.
1 ответ
Создать @SessionScoped
bean-компонент для хранения ресурсов (в некоторой коллекции / массиве?) и внедрения их в @ViewScoped
боб, а затем положиться на @PreDestroy
боб области видимости сессии.
Правда, таким образом ресурсы живут немного дольше, чем вы хотите, но это самое простое и надежное решение, которое вы можете получить. Если вы хотите сохранить @PreDestroy
в bean-объекте области видимости вам нужно каким-то образом убедиться, что конечный пользователь всегда выполняет навигацию по HTTP-запросу POST именно на этом bean-объекте области видимости. Вы не можете с уверенностью гарантировать это (компьютер конечного пользователя может дать сбой и т. Д.).