2009-08-09 41 views

回答

3

爲安全起見,Servlet 2.2特別棄用了這個功能,所以不應有任何官方的方式來做到這一點。不推薦,但如果您使用Tomcat,則可以嘗試使用Manager.findSession()。

我剛剛從我的應用程序中刪除HttpSession。在很多服務器運行時,很難保持會話同步。我們試圖通過寫我們自己的經理來調整它,但永遠無法使它正確工作。最後,我們用大約500行的代碼編寫了自己的會話實現,並且它的工作更好。

6

已經這樣做的方法已被棄用。 但是你可以實現你的想法使用HttpSessionListener,當創建一個新的會話時,將它存儲在HashMap中,會話ID作爲一個鍵,對象是實際的HttpSessionObject。你可以通過這個獲得參考。

+0

是的,我可以那樣做。 但我正在寫一個擁有數百萬用戶的大網站的應用程序。將這些ID /會話存儲在地圖中並不明智。 我需要從容器本身獲取會話,容器知道如何存儲它們。 –

+0

存儲對象意味着你不會存儲實際的對象。只有參考被儲存。所以存儲將是最小的。 – Niger

+0

我明白。但是,如果容器序列化不常用的會話到DB /文件系統? 我不知道WebLogic如何處理這些會話。 如果我找不到直接從容器中直接檢索會話的方法,我將使用此解決方案作爲最終解決方案。 –