У меня есть @SessionScoped
CDI beans. Раньше все они были управляемыми bean-файлами JSF (измененными с управляемых bean-блейдами JSF на управляемые bean-носители CDI).Удаление бобов с сеанса
Я выполнил следующие действия, чтобы удалить JSF с ограниченным сеансом, после того как пользователь успешно разместил онлайн-заказ.
Map<String, Object> sessionMap = context.getSessionMap();
sessionMap.remove("cartBean");
sessionMap.remove("orderItems");
sessionMap.remove("reviewOrderBean");
sessionMap.remove("intermediateLocaleBean");
sessionMap.remove("localeBean");
sessionMap.remove("currencyRateBean");
sessionMap.remove("currency");
Для того чтобы все было установлено по умолчанию после завершения обработки заказа. Это не имеет отношения к уничтожению/аннулированию всего сеанса HTTP, когда пользователь не должен выходить из системы после успешного завершения обработки заказа.
В отличие от JSF управляемых компонентов, КДИ бобы хранятся в памяти сервера некоторым КДИ реализации менеджера как Weld. Поэтому они недоступны на сеансовой карте - Map<String, Object>
.
Как это можно моделировать в любом случае относительно CDI beans?
UPDATE:
Имейте в виду, что когда-боб связан с контекстом, она остается в , что контекст, пока контекст не будет уничтожен. Невозможно удалить вручную из контекста. Если вы не хотите, чтобы bean-компонент сидел в сеансе на неопределенный срок, рассмотрите возможность использования другой области с сокращенным сроком действия , например, область запроса или разговора.
Таким образом, я предполагаю, что трудно вручную уничтожить компонент, не разрушая что-то еще.