2013-04-23 87 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