Уничтожение 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-объекте области видимости. Вы не можете с уверенностью гарантировать это (компьютер конечного пользователя может дать сбой и т. Д.).

Другие вопросы по тегам