Как создание HTTPSession работает, когда запрос поступает с веб-сервера, а не с веб-браузера?

У меня очень простой вопрос, как работает создание HTTPSession. Я знаю, что вы, ребята, меня уволите, если посчитаете этот вопрос похожим на него. вопросов существует. Но есть причина, почему я задаю этот вопрос Вот он: -

Я знаю, что httpsession уникален для веб-браузера, и сервер создает его, когда мы выполняем HttpServletRequest.getSession в первый раз. Он будет поддерживать тот же сеанс до тех пор, пока мы закройте браузер. Но у меня немного другой сценарий. У меня есть веб-приложение на одном экземпляре tomcat, например T1.На странице приветствия этого веб-приложения Я предоставил две ссылки, при нажатии на которые я попадаю на тот же сервлет Java (S1) другого веб-приложения, размещенного на другом экземпляре Tomcat T2 (эти две ссылки открывает два отдельных всплывающих окна). Теперь сначала я нажимаю ссылку1 и проверяю sessionId в S1 и нахожу его значение как 1678. Теперь сначала я нажимаю ссылку2 и проверьте sessionId в 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 до получения сеанса.Но этого не происходит?

6
задан M Sach 6 February 2012 в 10:17
поделиться