У меня есть очень простой вопрос, как работает создание HTTPSession. Я знаю, что вы, ребята, уволите меня, рассматривая этот вопрос как похожий
вопросов существует. Но есть причины, почему я задаю этот вопрос Вот он: -
Я знаю, что httpsession уникален для веб-браузера, и сервер создает его, когда мы выполняем HttpServletRequest.getSession в первый раз. Он будет поддерживать тот же сеанс, пока мы
закройте браузер. Но у меня немного другой сценарий. У меня есть веб-приложение на одном экземпляре tomcat, скажем T1.На странице приветствия этого веб-приложения
я предоставил две ссылки, по нажатию на которые я перехожу на один и тот же Java-сервлет (S1) другого веб-приложения, размещенного на другом экземпляре tomcat T2 (эти две ссылки
открывает два отдельных всплывающих окна). Теперь сначала я нажимаю ссылку1 и проверяю идентификатор сеанса в S1 и нахожу его значение как 1678. Теперь сначала я нажимаю ссылку2 и
проверьте идентификатор сессии в S1 и снова найдите его значение как 1678. Мой вопрос здесь заключается в том, почему я получаю один и тот же идентификатор сеанса для обоих исходящих запросов
из ссылки1 и ссылки2? Что я могу сделать, чтобы получить разные сессии для обоих этих запросов?
То, что я пробовал после поиска возможных решений в сети: - При нажатии на ссылку1 в сервлете S1 я скопировал атрибуты сеанса, аннулировал его и создал новый.
Скажем, новый идентификатор сеанса 8765. Теперь я нажимаю на ссылку2 и нашел тот же сеанс в этом запросе тоже. Так что я далее лишить законной силы и создаю новый
новый идентификатор сеанса 4897). В идеале он должен истечь в первом сеансе работы браузера (генерируется при нажатии ссылки1). Чтобы проверить это, я нажимаю в любом месте всплывающего окна 1, он не получает
срок действия истек, но я снова вижу последний сгенерированный идентификатор сеанса, т.е. 4897. Я не понимаю, почему он присоединяет один и тот же идентификатор сеанса к обоим всплывающим окнам?
Ребята, спасибо за ваше терпение, что нашли время и прочитали этот длинный сценарий?
Редактировать: -
Cookie[] cookies = req.getCookies();
if(cookies!=null)
for (int i = 0; i < cookies.length; i++) {
cookies[i].setMaxAge(0);
context.getResponse().getHttpServletResponse().addCookie(cookies[i]);
}
HttpSession myAppSession = req.getSession();//line 1
Предположим, что по щелчку ссылки1 я получаю идентификатор сеанса как 1234, затем после щелчка по ссылке 2 также получаю тот же идентификатор сеанса. Насколько я понимаю, после выполнения кода выше строки 1, я должен получить другой идентификатор сеанса, так как я устанавливаю MaxAge as0 перед получением сеанса. Но это не происходит?