HttpSession.setMaxInactiveInterval не работает в Tomcat 6 - PullRequest
1 голос
/ 04 декабря 2009

Я пытаюсь настроить время ожидания сеанса с помощью HttpSession.setMaxInactiveInterval, и оно не работает.

Вот мой код (Groovy), который выполняется без исключений:

def paramValue = WebAttributes.REQUEST.getParameter('maxInactiveSeconds');
println 'paramValue=' + paramValue;
if (paramValue != null) {
  def seconds = Integer.parseInt(paramValue);
  WebAttributes.REQUEST.getSession().setMaxInactiveInterval(seconds);
}

Некоторые детали:

  • Tomcat 6.0.16
  • Это происходит в веб-приложении, отдельном от «обычного» (т. Е. С визуальным контентом), но я определил emptySessionPath = "true", поэтому сессия * должна * распространяться среди веб-приложений

спасибо,

гаруспик

Ответы [ 2 ]

3 голосов
/ 05 декабря 2009

Как ты это проверял? Знаете ли вы, что каждый новый запрос снова откладывает время ожидания? Таким образом, запрос F5 до ожидаемого таймаута не поможет. Веб-контейнер также не сразу уничтожит сеанс, поэтому вы не увидите немедленного результата от любого HttpSessionListener. Он будет пожинать их через определенные промежутки времени, которые могут быть каждую минуту, но также могут быть каждые 15 минут. Однако он сразу же пожнет его, если новый запрос поступил через после времени ожидания.

Что касается вашей фразы "сеанс должен быть общим", лучший способ убедиться в этом, конечно, путем проверки идентификатора сеанса либо программно (например, отображая ${pageContext.session.id}), либо просто путем значение файла cookie jsessionid в вашем веб-браузере.

Для отслеживания фактического создания и уничтожения сеанса используйте пустышку HttpSessionListener. Вот базовый пример:

public class MyHttpSessionListener implements HttpSessionListener {
    public void sessionCreated(HttpSessionEvent event) {
        System.out.printf("%s session %s created %n", new Date(), event.getSession().getId());
    }
    public void sessionDestroyed(HttpSessionEvent event) {
        System.out.printf("%s session %s destroyed %n", new Date(), event.getSession().getId());
    }
}

Надеюсь, это поможет.

1 голос
/ 17 декабря 2009

Оказалось, что была другая технология, устанавливающая maxInactiveInterval обратно на 30 минут, отвергая мои попытки изменить его.

Tomcat, Java и т. Д. Все работали, как и ожидалось.

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