2013-04-04 87 views
1

我的问题有点主观,可能不在上下文中,所以请原谅我。大型应用程序的会话管理(Java)

我在哪里,我们需要在不同的地方使用会话的应用工作说,在会议

  1. 存储用户偏好。
  2. 在会话中存储一些属性。
  3. 用户配置文件。
  4. 在会话中存储购物车。

和其他许多事情,更多的是我们需要提供一个干净的方式让其他用户使用会话。 我知道如何注入会话或使用它,以及它如何工作等,所以这不是我的问题。

我想知道如何创建服务say(SessionService),并让所有的API都使用它来处理HTTP Session。

有没有人工作/开发过这样的实现,如果是的话请分享一下如何做到最好,任何参考都会有帮助。

编辑

我们正在使用Spring Security进行身份验证和授权

回答

0

我坚信,本次会议应尽可能保留作为从系统的业务逻辑去耦,是力所能及的。通过一切手段,当在视图层操作时,提供实用程序来访问会话,但请记住以下内容;

  • 会话对象本身不是线程安全的;
  • 任何属性都可以在任何时间
  • 任何属性都可以通过任何的代码进行修改来改变
  • 测试任何涉及该会议是痛苦

如果你关注的是业务逻辑再考虑以下方法;

  • 实现一个服务层
    • 把手业务逻辑不可变对象
    • 变换可以通过自定义适配器来处理或Spring convertors
    • 给人视图和业务逻辑
    • 更好的可测性之间的相关分离(如这是一个字)
  • 管理临时状态i n以下的内存对象数据库,而不是会议
    • 支持分布式复制,以便HA可以实现
    • 支持事务行为实现一致性
    • 容易测试
    • 看起来很酷你的简历

我希望这有助于。如果没有更多关于你的目标的信息会有所帮助。