Случайная сессия - PullRequest
       13

Случайная сессия

6 голосов
/ 21 апреля 2009

Я запускаю веб-приложение J2EE в Tomcat, и недавно мне было поручено добавить метрики в приложение. Я использую SessionListener для определения, когда сеанс уничтожен, а затем загружаю метрики в базу данных. Время ожидания моего сеанса установлено в моем файле web.xml на 30 минут, и я нигде не отменяю сеанс программно. Часто в течение 1–5–10-минутного периода моего входа в систему для тестирования я вижу 3 или 4 набора показателей, загруженных в базу данных, все с разными идентификаторами сеансов.

Помимо web.xml и session.invalidate (), что еще может привести к разрушению сеанса в Tomcat? Исключения? Будет ли Tomcat когда-нибудь случайно аннулировать сессии?

Ответы [ 2 ]

4 голосов
/ 21 апреля 2009

Возможно, ваш веб-браузер решил не отправлять куки-файл сеанса по запросу в веб-приложение, где ваше приложение ожидало его. Я видел, как это произошло с правилом переписывания Apache; URL-адрес вне пути файла cookie сеанса был перенаправлен в веб-приложение. Произошло что-то похожее на следующее (детали могут быть неверными):

  • мое веб-приложение было расположено в / app /
  • Таким образом, сессионный cookie был связан с этим путем / app /
  • страница в веб-приложении, указанная в /img/magic.jpeg
  • браузер не отправил файл cookie сеанса в своем запросе для этого изображения (путь не совпадает)
  • сервер перенаправил запрос (внутренне) в / app / createImage? Magic
  • веб-приложение не получило cookie сеанса, поэтому оно создало новый сеанс

Вы сможете увидеть, вызывает ли это вашу проблему, если вы зарегистрируете исходный URL для новых сеансов.

0 голосов
/ 21 апреля 2009

Это, вероятно, не то, что происходит на вашем сервере, но если системное время установлено на сервере, это может привести к истечению сеансов быстрее, чем "истекшее время" 30 минут. Tomcat - по крайней мере с 5.5 - использовал «время часов» для истечения сеансов, поэтому изменение системных часов повлияет на время жизни сеансов.

...