2009-02-01 7 views
1

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

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

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

ответ

3

Per ISASI's answer вы можете использовать этот код, чтобы сессию недействительной:

Session.instance().invalidate(); 

В ответ на ваш РАЗВЕЙТЕ «вопрос» (который вы добавили в ответ, причудливо). Чтобы закрыть сеанс после информирования пользователя о необходимости, вы создаете страницу подтверждения и перенаправляете его на основании правила, связанного с результатом «успеха». Затем создайте действие страницы, чтобы аннулировать сеанс.

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

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

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

Смежные вопросы