У нас есть требование перейти на страницу входа в систему поставщика из основного приложения. Если сеанс действителен, то данные, выбранные в основном приложении, видны на странице поставщика, если мы сохраняем данные в сеансе. Для обработки этого в Tomcat у нас был приведенный ниже код в начале входа в систему поставщика jsp.
request.getSession().invalidate();
Сейчас мы переходим на сервер приложений Websphere. Тот же код не работает в WAS. Мы получаем исключение IllegalStateException. Где-то я читал, что WAS обрабатывает сеанс через куки. Таким образом, IllegalStateException выбрасывается, если сеанс уже признан недействительным.
Я изменил код для WAS, как показано ниже: userId — это идентификатор пользователя, который я сохраняю в сеансе в основном приложении.
if ((request.getSession() != null) && (request.getSession().getAttribute("userId") != null)) { // Old session
request.getSession().invalidate();
}
Даже если управление находится внутри условия if, оно выдает исключение IllegalStateException. Для нашего требования у меня есть одна альтернатива: удалить все параметры сеанса в начале входа в систему jsp, чтобы ничего не было передано. Но для этого я должен удалить каждый параметр (их почти 20) один за другим. А также в будущем любой новый параметр, который я буду сохранять в сеансе, я должен обновить этот jsp.
Есть ли какое-либо решение, чтобы сначала аннулировать весь сеанс, если он старый?