Потому что комментарий не может объяснить детали.Позвольте мне ответить здесь:
- Так есть ли способ изменить режим отслеживания сеансов по умолчанию
Да.Используйте ServletContext.setSessionTrackingModes(Set<SessionTrackingMode> sessionTrackingModes)
для изменения SessionTrackingMode сервлета (означает, что изменение влияет на все запросы к этому сервлету).
Вы не можете изменить SessionTrackingMode для каждого запроса / пользователя.
Ссылка: setSessionTrackingModes
возможно ли, что мы отсоединили текущий ServletContextListner и добавили новый в контексте приложения, поскольку это зависит от HttpsSession
Во-первых, я думаю, что вы НЕ МОЖЕТЕ сделать это.Поскольку причина проблемы в том, что вы пытаетесь изменить свойство области приложения sessionTracking
.Это изменение влияет на все запросы в ServletContext, а не на некоторые конкретные запросы.
Во-вторых, вы можете использовать apache mod_rewrite и mod_headers , чтобы "изменить" sessionTracking для конкретного запроса.
- добавить заголовок для конкретного запроса, который вы хотите изменить sessionTrackingMode.Например: 'X-SESSION-TRACKING-URL'
- В настройке apache добавьте следующее правило:
RewriteCond %{HTTP:X-SESSION-TRACKING-URL} !^$
RewriteRule ^(.+) $1?jsessionid=%{HTTP_COOKIE:jsessionid}
Объяснение:
% {HTTP: X-SESSION-TRACKING-URL}! ^ $: Если есть заголовок X-SESSION-TRACKING-URL, тогда переписать URL
$ 1: весь URL
% {HTTP_COOKIE: jsessionid}: получить jsessionid из cookie и установить значение url