2014-08-05 4 views
2

В кластерной среде Websphere, я извлечь JSESSIONID из текущего запроса HTTP, используя следующий код:Получить полный JSESSIONID на кластере Websphere

HttpServletRequest servletRequest = ...; 
servletRequest.getSession().getId(); 

Из этого кода я получаю идентификатор, что-то вроде этого: z84d621pxY1VChlK_0eEgFZ.

Затем, если я проверю файлы cookie на своем браузере, я вижу, что JSESSIONID содержит указанный выше ID, но с дополнительной информацией, например. 0000z84d621pxY1VChlK_0eEgFZ:18fjt9t1u

Я удивлен, что HttpServletRequest.getSession().getId() не дает мне справа идентификатор.

Обратите внимание, что если я тестирую Tomcat, я всегда получаю то же значение.

Как мне получить полную стоимость JSESSIONID?

ответ

3

Он дает вам правильный идентификатор - идентификатор сеанса. Остальная часть номера - это внутренние связанные с WebSphere части. WebSphere куки сессии состоит из 3-х частей:

  • номер эпоха
  • идентификатор сеанса
  • клон ID

номер Epoch (первые четыре цифры), которые используются веб-контейнером, чтобы убедиться, что кэшированные сессии не является устаревшим.

Идентификатор сеанс - это фактический идентификатор сеанса, который позволяет контейнер, чтобы найти сеанс пользователя

Клона ID - используются WebSphere плагин установлен с вебом-сервером для пересылки запроса на сервер, который содержит данные сеанса относительно сродства сеанса ,

Зачем вам нужны другие детали? Они не идентифицируют сеанс и могут меняться в течение сеанса.

UPDATE
Вы можете получить полный идентификатор сеанса с помощью печенья апи:

Cookie cookies[] = request.getCookies(); 
for(int i = 0; i< cookies.length; i++) { 
    out.println(cookies[i].getName() + " " +cookies[i].getValue()+ " <br>"); 
} 
// output: 
JSESSIONID 00002ikOjIY63tLqbF-6OF0QxL8:-1 
+0

Спасибо за объяснение. JSESSIONID отправляется через JMS в другое приложение, которое должно вызывать веб-сервер в том же сеансе HTTP, что и браузер. Я программно отправляю HTTP-запрос и файл cookie JSESSIONID с содержимым, которое я получаю в веб-приложении. Если JSESSIONID не является полным, это не сработает. – LaurentG

+0

Я не нашел лучшего решения для чтения JSESSIONID из файла cookie. Спасибо за предложение. – LaurentG

 Смежные вопросы

  • Нет связанных вопросов^_^