【问题标题】:How to persist Http Session如何持久化 Http Session
【发布时间】:2013-04-16 22:10:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: java tomcat xstream serializable


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的建议。第三个选项看起来值得一试
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 1970-01-01
      • 2013-01-06
      • 2019-05-10
      • 2014-01-31
      • 2011-02-20
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多