Tomcat 6: Максимальное время простоя сеанса отличается между экземплярами - PullRequest
3 голосов
/ 26 октября 2011

Я использую HttpSession с Tomcat 6. Первый экземпляр Tomcat 6, в котором я развернул свое веб-приложение, имел поведение, которое я ожидал бы для моих сеансов Tomcat (я установил maxInactiveInteval в моем сеансе на 30 минут).

Обновление : я добавил еще один код к следующему, чтобы продемонстрировать, как именно я устанавливаю этот тайм-аут в сеансе

Так я сначала настраиваюсеанс:

session = request.getSession(true);
session.setAttribute(USER_CREDENTIALS, new Credentials(username, password));
session.setMaxInactiveInterval(60*30);

Затем у меня есть перехватчик, который проверяет этот сеанс:

HttpSession session = request.getSession(true);
Credentials cred = (Credentials) session.getAttribute(AuthController.USER_CREDENTIALS);

Кажется, работает нормально в экземпляре Tomcat, с которым я разработал, но в другом экземпляре Tomcat 6,в среде с балансировкой нагрузки maxInactiveInteval, похоже, не соблюдается.

Обновление: Я имею в виду, что сессия пользователя истекает, если пользователь неактивен (новых запросов нет) в течение примерно десяти секунд.

В коде нет другого места, где установлен maxInactiveInteval.Что может быть причиной такого поведения?

1 Ответ

2 голосов
/ 28 октября 2011

Что касается комментариев к вопросу, ваша конкретная проблема заключается в том, что сбалансированный экземпляр Tomcat завершает сеансы почти сразу.Установка / изменение <session-timeout> и setMaxInactiveInterval() просто не помогают вообще.

Сначала необходимо исключить подозрение клиента, отслеживая трафик файлов cookie с помощью Firebug и / или Fiddler .Если трафик файлов cookie выглядит нормально (т. Е. Клиент возвращает надлежащий файл cookie сеанса для всех последующих запросов), то конфигурация loadbalancer или Tomcat не работает.Это не ошибка программирования, а еда для администратора сервера.

...