Значение памяти OmniFaces ViewScoped bean?

Из того, что я понимаю, ViewScoped beans уничтожается только при выполнении одного из следующих действий:

1) JSF отправляет запрос POST на другую страницу с чем-то вроде <h:commandLink...>

2) Количество открытых beans превышает максимальную настройку порога (по умолчанию 15)

3) Пользовательский сеанс истекает

Вот моя путаница:

Значит ли №1, что если пользователь переходит от страницы с запросом GET, bean останется открытым, даже если, в конце концов, POST JSF происходит на той же вкладке браузера на другой странице? Или все активные экземпляры @ViewScoped для этой вкладки браузера будут уничтожены после отправки отправления JSF независимо от того, на какой странице он находится?

Значит ли # 2, что пользователь может иметь 15 bean экземпляров, активных для каждого класса @ViewScoped? Или это 15 bean экземпляров, независимо от класса, то есть я мог бы иметь 5 экземпляров Class1, 5 экземпляров Class2 и 5 экземпляров Class3, а новый bean уничтожит самый старый активный bean?

Для # 3, если для STATE_SAVING_METHOD установлено значение "клиент", будут ли какие-либо последствия уничтожены в ViewScoped beans? Из того, что я помню, должен быть способ ручного управления истечением сеанса, если для STATE_SAVING_METHOD установлен клиент.

Наконец, существует ли способ управлять активным ViewScoped beans, чтобы они могли быть уничтожены, когда пользователь нажимает "logout", например?

Ответы

Ответ 1

Я понял ответы на них, добавив метод @PreDestroy для каждого @ViewScoped bean и выполнив регистрацию, когда он будет уничтожен. Для других, которым может быть интересно:

Для # 1, bean не будет уничтожен, если вы перейдете от страницы с запросом GET, но затем отправьте запрос на отправку позднее. То, что bean будет оставаться в памяти до тех пор, пока не будет достигнута установка "максимальные активные области обзора", и она не будет уничтожена, либо сеанс недействителен.

Для # 2 класс не имеет значения. Вы можете иметь 5 экземпляров Class1, 5 экземпляров Class2 и 5 экземпляров Class3, а новый экземпляр ViewScoped bean уничтожит самый старый bean, если ваш порог равен 15.

Для # 3, похоже, что beans уничтожаются после того, как сеанс был аннулирован, даже если для STATE_SAVING_METHOD установлен клиент.