Tomcat7 SESSIONID продолжает меняться после применения Redis RedisSessionManager применяется - PullRequest
0 голосов
/ 31 мая 2019

Я использую tomcat7 с oracle-java8 в Ubuntu16.04.

И я запускаю 2 разных экземпляра tomcat для балансировки нагрузки, но поведение по умолчанию таково, что сессия не может делиться между ними.

Поэтому я обратился к решению с использованием RedisSessionManager.

После того, как я добавил следующие строки в файл tomcat conf/context.xml (, конечно, я добавил фляги зависимостей в директорию lib ):

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
             host="127.0.0.1"
             port="6379"
             database="0"
             password="defuRedis2017"
             maxInactiveInterval="60" />

Затем запустите один экземпляр tomcat.

Но после этого сервер, похоже, больше не может сохранять сеанс и вернул другой Set-Cookie *Заголовок 1016 * в каждом запросе, поэтому вход в систему больше не может работать даже с одним экземпляром tomcat.

Если я закомментирую вышеприведенные строки (в файле context.xml), сеанс будет работать как положено.

Так что же мешает работать с RedisSesssionManager?

1 Ответ

0 голосов
/ 03 июня 2019

Наконец-то я сам нашел точку:

com.orangefunction.tomcat.redissessions.RedisSessionManager НЕ поддерживает установку значения -1 для настройки session-timeout, в то время как значение по умолчанию -

В моем случае мой исходный файл web.xml имеет следующее содержимое:

<session-config>
    <session-timeout>-1</session-timeout>
    <cookie-config>
        <max-age>2592000</max-age>
    </cookie-config>
</session-config>

Где session-timeout установлен в -1, и это заставляет менеджера сеанса всегда писать устаревшиесеанс, который вызывает проблему.

К тому времени я обнаруживаю, что комментирование этой части конфигурации остановит проблему, и после некоторых экспериментов я обнаружил, что мы просто используем большой session-timeout вместо -1заставит его работать нормально:

<session-config>
    <session-timeout>518400</session-timeout>
    <cookie-config>
        <max-age>2592000</max-age>
    </cookie-config>
</session-config>

Надеюсь, это поможет парням, имеющим ту же проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...