Как сделать недействительным сеанс POJO шва - PullRequest
1 голос
/ 01 февраля 2009

Я играю с небольшим приложением сшивания, которое имеет сессионный охват. Последний способ отправки по почте. Как я могу сделать недействительным свой сеанс после отправки почты? Прямо сейчас, когда пользователь снова вызывает исходный URL, сеанс все еще живет, и все ранее заполненные данные формы все еще там.

Я нашел примеры, как это сделать с помощью разговоров и ejb, но не с POJO и сессиями.

Спасибо, Рори

Ответы [ 2 ]

3 голосов
/ 23 февраля 2009

За ответ ISASI Вы можете использовать этот код для аннулирования сеанса:

Session.instance().invalidate();

В ответ на ваш последующий "вопрос" (который вы добавили в качестве ответа, причудливо). Чтобы закрыть сеанс после информирования пользователя об успехе, создайте страницу «Подтвердить» и перенаправьте на нее на основе правила, связанного с результатом «Успех». Затем создайте действие страницы для аннулирования сеанса.

<page view-id="/process/confirm.xhtml" action="#{emailManager.completeSession}">

Технически, сеанс будет закрыт перед визуализацией страницы, так что может возникнуть проблема с синхронизацией доступа к данным сеанса, поэтому вам может потребоваться взломать параметры страницы, чтобы компенсировать это. Это потому, что вы в основном делаете это «неправильно», используя сеанс по электронной почте. Вам будет намного лучше использовать беседу, потому что есть аннотация @End, которая завершает беседу после визуализации представления - намного проще.

Вам нужно будет переключиться на использование разговоров, если ваше приложение включает более одной задачи, поскольку любое состояние, удерживаемое между задачами, будет потеряно. Я предполагаю, что это произойдет довольно быстро. Эти проблемы с синхронизацией и управлением состоянием - это проблема, для решения которой был разработан Seam.

1 голос
/ 02 февраля 2009

Session.instance () недействительными ();.

...