Сбросить JSessionID при изменении URL - PullRequest
1 голос
/ 25 июля 2011

Я в настоящее время интернационализирую веб-сайт и столкнулся с некоторыми проблемами около jsessionID s.Я использую веб-сервер Apache, который балансирует нагрузку на несколько серверов приложений JBoss через mod_jk.

Когда я захожу на сайт по URL-адресу ГБ по умолчанию, jsessionID правильно создается на выделенном сервере приложений jboss.например, www.mysite.com создать сеанс на GB_Jboss.

Когда я обновляю URL-адрес до www.mysite.com/fr, я хочу, чтобы новый идентификатор jsessionID создавался на FR_JBoss.

Когда я обновляюURL на www.mysite.com/us, я хочу создать новый jsessionID на US_JBoss.

Однако каждый раз, когда я обновляю URL, он всегда отображает оригинальный jsessionID.

Я надеюсь, что этоимеет смысл?Любые идеи, как я могу заставить это работать через Apache?Или это проблема балансировки нагрузки на балансировщике нагрузки?

1 Ответ

0 голосов
/ 26 июля 2011

Любопытно узнать, почему вы хотите создать новый сеанс для другого URI. В любом случае, я могу придумать пару вариантов:

  1. Добавить запись в cookie для URI, для которого вы сгенерировали сеанс. Например, если yoursite / fr сначала получает сеанс, добавьте его в файл cookie клиента. При каждом запросе вы можете использовать фильтр, чтобы проверить, отличается ли URI от указанного в cookie. если да, аннулируйте этот сеанс и разрешите создать новый для пользователя.
  2. Поддерживает одноэтапную HashMap на стороне сервера, которая имеет URI сайта и сопоставление идентификатора сеанса. Если URI сайта не совпадает с идентификатором сеанса в каждом запросе - аннулировать сеанс. Недостатком этого подхода является то, что HashMap необходимо реплицировать на все узлы кластера, чтобы он работал должным образом после перехода на другой сервер.
...