Из того, что я понимаю, ViewScoped бобы только разрушаются, когда один из следующих имеют место:Памятные последствия OmniFaces ViewScoped bean?
1) JSF отправляет запрос POST на другую страницу с чем-то вроде <h:commandLink...>
2) Число открытых фасолью превышает максимальное значение порога (по умолчанию 15)
3) сеанс пользователя истекает
Вот моя путаница:
ли # 1 означает, что если пользователь переходит от страницы с запросом GET, компонент останется открытым, даже если в конечном итоге JSF POST происходит на той же вкладке браузера на другой странице? Или все активные экземпляры @ViewScoped для этой вкладки браузера будут уничтожены после отправки отправления JSF независимо от того, на какой странице он включен?
Имеет ли №2, что пользователь может иметь 15 экземпляров боба, активных для каждого класса @ViewScoped? Или это 15 экземпляров bean независимо от класса, то есть я мог бы иметь 5 экземпляров Class1, 5 экземпляров Class2 и 5 экземпляров Class3, а новый компонент уничтожил бы самый старый активный компонент?
Для # 3, если для STATE_SAVING_METHOD установлено значение «клиент», будут ли какие-либо последствия уничтожены в объектах ViewScoped? Из того, что я помню, должен быть способ вручную управлять истечением сеанса, если STATE_SAVING_METHOD установлен для клиента.
Наконец, есть ли способ управлять активными компонентами ViewScoped, чтобы они могли быть уничтожены, когда пользователь нажимает «logout», например?
Это будет длинная история, но в двух словах она не отличается от того, как работает JSF '@ ViewScoped'. – BalusC
Для вашего последнего вопроса об управлении объектами '@ ViewScoped', я не вижу никакой причины для выполнения такой операции, если удаление сеанса гарантирует, что они будут удалены. –
Я предполагаю, что последний вопрос есть в случае, если бобы не будут уничтожены при истечении срока действия сеанса, когда STATE_SAVING_METHOD настроен на клиента. Моя основная проблема заключается в том, что я храню слишком много информации в компонентах ViewScoped (таких как данные таблицы), которые не уничтожаются. Я хочу быть уверенным, что я правильно использую эту область. Кажется, что ViewScoped может быть просто предназначен для страниц с формами, которые уничтожаются с помощью кнопки отправки, но это также удобно для кэширования рассчитанных данных, если проблемы памяти не возникают из-за использования. –