2010-10-06 19 views
2

我在我的web應用程序中維護sessionid(s)和HttpSession對象的映射。我使用HttpSessionListener來從地圖中填充或刪除會話。當我的Web服務器崩潰並停止並恢復時,我需要一種方法來檢查提交的sessionid是否有效。很顯然,當應用程序重新聯機,地圖是空的,因此所有的會話ID是無效的,但我只是想一些方法來檢查傳入的SessionID,如果可能的話,所有..如何檢查sessionId是否在servlet中有效(java)

感謝

回答

3

您可以將這些數據保存在某個表中。這樣它就不會受到崩潰的影響。順便說一下,服務器將會話序列化到磁盤,如果你也想要它們的話。

1

一建議將您的Map序列化到磁盤並在Web服務器啓動時重新加載。將地圖備份到磁盤的策略取決於您的要求,您可以在每次添加/更新地圖時或定期寫入磁盤。將會話數據寫入磁盤相當容易,這通常是爲了實現冗餘和負載平衡場景而完成的。

1

你爲什麼要自己維護會議? servlet容器應該爲你做。我沒有看到你的代碼,也許你有一個很好的理由去做你正在做的事情,但我感覺你只是不理解servlet API,並試圖自己重新實現它。

另外,您可能會對此感興趣:Tomcat具有持續會話的功能,這意味着會話狀態在服務器重新啓動後仍然存在。 (在更新應用程序時關閉此功能,因爲不同版本的類可能不匹配。)

+0

我現在正在努力解決同一個問題。看看[這裏](http://stackoverflow.com/questions/30834936/send-cookie-on-every-request-to-identify-user)。我正在使用GWT;你能解釋整個sessionID事情是如何完成的嗎? – displayname 2015-06-15 17:11:15