Удалите управляемый bean-компонент в другом приложении - PullRequest
1 голос
/ 05 марта 2012

У меня есть приложение JSF 2.0 (Приложение № 1), в котором есть управляемый компонент Session Scoped, выполняющий некоторую бизнес-логику, такую ​​как проверка и т. Д. После нажатия кнопки «Продолжить» пользователю отображается другая страница простой HTML-формы и нажатие наКнопка «Отправить» на этой странице отправит форму в другое приложение (Приложение № 2).После того, как приложение № 2 выполнит свою работу, пользователю будет показана страница из приложения № 3.Обратите внимание, что все это происходит на вкладке ОДНОГО САМОГО браузера.

В приложении № 3 (которое также является приложением JSF 2.0) я хотел бы удалить сессионный компонент области приложения № 1.Как я могу это сделать?Я попробовал приведенные ниже варианты, но ни один из них, похоже, не работает.

//First approach
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("app1Bean");

Я получаю значение NULL для приведенной выше строки кода

//second approach
HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
        .getExternalContext().getSession(true);
session.removeAttribute("app1Bean");

Здесь также указано значение NULL.

1 Ответ

0 голосов
/ 05 марта 2012

По умолчанию несколько приложений, работающих на одном сервере, не совместно используют один и тот же сеанс. Однако сервер может быть настроен для этого. Как именно это сделать, зависит от марки / версии сервера. За подробностями обращайтесь к администратору сервера.

Если изменение конфигурации сервера невозможно, лучше всего хранить информацию, которую вы сохранили в сеансе, в общем источнике данных (например, в базе данных SQL). Таким образом, последнее приложение должно просто удалить или манипулировать информацией в источнике данных, и вам больше не нужно возиться с областью сеанса.

...