2013-04-23 162 views
0

我有Spring MVC和Webflow的Web應用程序。我正在實現「快照」機制:開發人員可以通過URL中的特殊參數保存其當前狀態(頁面,組件狀態等),然後再回到此狀態。如何堅持Http會話

狀態存儲在他們的磁盤中。爲了實現這一點,我需要存儲整個HttpSession - 不幸的是,並不是所有的對象都被序列化。我使用XStream,但它會生成巨大的XML(300MB),這使得我的tomcat在反序列化過程中崩潰。

你可以建議其他庫或方式序列化/保存HTTP會話與未實現的對象Serializable?

回答

4

第一種方法 - 爲需要序列化的對象創建中間「會話DTO」層。所有「會話DTO」都是可序列化的,並僅用於序列化會話。很顯然,這意味着很多代碼會將會話DTOs對象的屬性複製到應用程序中使用的真實對象中,但是有一大堆屬性對象複製器。第二種方法 - 創建Java地圖,將所有對象及其屬性存儲爲鍵值對(每個對象將是另一個地圖,可嵌入另一個地圖內)。然後該地圖將被序列化。很明顯,將地圖結構複製到應用程序中使用的實際對象將涉及很多工作。這或多或少是「手工製作的基於Java地圖的JSON格式」。

第三種方法 - 嘗試使用JSON而不是XML,解析應該消耗更少的資源。我會從那一開始。

+0

感謝您的建議。第三個選項看起來值得嘗試 – smas 2013-04-23 16:30:30