2014-05-15 79 views
0

我的tomcat應用程序隨機使會話信息和用戶無效,如果被迫再次登錄。只有當webapp與其他特定的web應用程序一起部署時纔會發生這種情況。當它自己運行而沒有其他應用程序運行時,它工作正常。某處有衝突,但我無法找到它。Tomcat隨機使會話失效

有問題的webapp使用Spring和Hibernate框架。其他的webapps也可以。以下是發生情況的一個例子。

當我第一次登錄時,一切都很好。

JSESSIONID Matches

的JSESSONID在cookie和管理控制檯都匹配。但是,在使用應用程序時,它會隨機終止會話。

Session gone in Tomcat Console

當我另一個web請求,登錄頁面被示出並且新JSESSIONID已經產生。

從我所做的研究中,只要JSP文件被調用並且沒有當前會話就會生成JSESSIONID。我不明白爲什麼會話失效,但只有當它與其他應用程序一起運行時。我檢查了內存使用情況,並沒有注意到內存下降與會話失效之間的關聯。我想這意味着Tomcat沒有清除會話來釋放內存。

任何幫助深表感謝

+0

另請參閱:http://stackoverflow.com/questions/959174/tomcat-sessions-expiring-unexpectedly –

回答

0

下面的步驟可以幫助你:

  1. 你確定你沒有覆蓋缺省的會話超時值,請檢查您的會話超時在運行。
  2. 來自tomcat管理頁面(〜/ manager/html/list)查看您的Web應用程序會話的狀態並按下應用程序會話列的值。
0

檢查session.setMaxInactiveInterval()未在其他Web應用程序中以編程方式配置。這會引發你描述的行爲。

此方法與您在web.xml文件中找到的會話超時值稍有不同。 (Here's a good rundown。)