我正在使用Wicket在Jetty服務器上運行的web應用程序。Wicket意外會話ID
在特定情況下,應用程序的用戶會自動丟失會話,直到他關閉瀏覽器才能再次登錄。 (我已排除會話超時並故意註銷)
什麼是記錄會話失效並追蹤此問題原因的最佳方法?
我正在使用Wicket在Jetty服務器上運行的web應用程序。Wicket意外會話ID
在特定情況下,應用程序的用戶會自動丟失會話,直到他關閉瀏覽器才能再次登錄。 (我已排除會話超時並故意註銷)
什麼是記錄會話失效並追蹤此問題原因的最佳方法?
在Jetty方面,您可以設置一個servlet javax.servlet.http.HttpSessionListener
來記錄各種創建/銷燬事件。
創建自己的這個類,並將其添加到您的WEB-INF/web.xml
<web-app>
<listener>
<listener-class>MySessionListener</listener-class>
</listener>
或者您可以使用'@ WebListener'註釋:http://docs.oracle.com/javaee/7/api/javax/servlet/annotation/WebListener.html並實現'HttpSessionListener'接口。 –
我試過這種方法,它有助於獲得有關會話失效和創建的調試信息。它不能幫助我追蹤這個問題,因爲它在這個過程中提供的信息太晚了。 我正在尋找傳入的jsessionid在某種'內部會話id表'中是否存在的檢查點。如果會話ID不被識別,它應該在日誌中發出警告。 (現有的cookie,錯誤的ID) – Cloud
你可以寫的WebSession
子類,並覆蓋invalidate()
方法失效之前打印出來的堆棧跟蹤。
這將有助於確定會議的失效發生的,因爲東西Wicket
或東西以外的Wicket
你有沒有排除,你(或其他人)在服務器重新啓動的可能性? – aioobe
是的,它發生在幾個星期內,隨機時間和應用程序中的頁面。與服務器重啓無關 – Cloud
也可能只是會話超時。 –