1

我有带有 Spring MVC 和 Webflow 的 Web 应用程序。我正在实现“快照”机制:开发人员通过 URL 中的特殊参数可以保存他们当前的状态(页面、组件状态等),然后在将来回到这个状态。

状态存储在他们的磁盘中。为了实现这一点,我需要存储整个 HttpSession - 不幸的是,并非所有对象都被序列化。我使用 XStream,但它会生成巨大的 XML (300MB),这会使我的 tomcat 在反序列化期间崩溃。

您能否建议其他库或使用未实现可序列化的对象序列化/保存 http 会话的方法?

4

2 回答 2

4

第一种方法 - 为需要序列化的对象创建中间“会话 DTO”层。所有“会话 DTO”都将是可序列化的,并且仅用于序列化会话。显然,这意味着相当多的代码会将属性从会话 DTO 对象复制到应用程序中使用的真实对象,但是有大量的属性对象复制器。

第二种方法 - 创建将所有对象及其属性存储为键值对的 Java 映射(每个对象将是另一个映射,可以嵌入到另一个映射中)。然后该地图将被序列化。显然,将映射结构复制到应用程序中使用的实际对象会涉及很多工作。这或多或少是“基于 JSON 格式的手工制作 Java 地图”。

第三种方法 - 尝试使用 JSON 而不是 XML,解析应该减少资源消耗。我会从那个开始。

于 2013-04-23T16:02:23.367 回答
1

您可以查看memcached-session-manager的不同序列化策略。

于 2013-04-23T17:14:56.023 回答