Per ISASI's answer вы можете использовать этот код, чтобы сессию недействительной:
Session.instance().invalidate();
В ответ на ваш РАЗВЕЙТЕ «вопрос» (который вы добавили в ответ, причудливо). Чтобы закрыть сеанс после информирования пользователя о необходимости, вы создаете страницу подтверждения и перенаправляете его на основании правила, связанного с результатом «успеха». Затем создайте действие страницы, чтобы аннулировать сеанс.
<page view-id="/process/confirm.xhtml" action="#{emailManager.completeSession}">
Технически, сессия будет закрыта beofre отображения страницы, так что может создать проблемы синхронизации в отношении доступа к данным сеанса, так что вам, возможно, придется рубить вокруг с параметрами страницы, чтобы компенсировать. Это связано с тем, что вы в основном делаете это «неправильно», используя сеанс для каждого письма. Вы будете намного лучше использовать разговор, потому что есть аннотация @End, которая заканчивает разговор после визуализации представления - намного проще.
Вам нужно будет переключиться на использование разговоров, если ваше приложение включает в себя несколько задач, поскольку любое состояние между задачами будет потеряно. Я предполагаю, что это произойдет довольно быстро. Эти проблемы управления временем и состояниями являются проблемой. Разговоры по швам были разработаны для решения.