大应用程序的会话管理(Java)

时间:2013-04-04 17:17:04

标签: java java-ee web-applications servlets

我的问题有点主观,可能脱离背景,所以请原谅我。

我正在开发一个应用程序,我们需要在各个地方使用Session

  1. 将用户首选项存储在会话中。
  2. 在Session中存储一些属性。
  3. 用户个人资料。
  4. 在会话中存储购物车。
  5. 以及其他许多事情,更多的是我们需要提供一种干净的方式让其他人使用Session。 我知道如何注入会话或使用它以及它是如何工作的,所以这对我来说不是问题。

    我想知道一种创建服务说法(SessionService)的方法,并让所有API使用它来使用HTTP会话。

    是否有任何人工作/开发此类实施,如果是,请分享如何做到最好,任何参考都会有所帮助。

    修改

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

1 个答案:

答案 0 :(得分:0)

我坚信,只要有可能,会议应该尽可能地与系统的业务逻辑脱钩。

无论如何,在视图层操作时,请提供实用程序来访问会话,但请记住以下内容;

  • 会话对象本身不是线程安全的;
  • 任何属性都可以随时更改
  • 任何属性都可以被任何代码修改
  • 测试涉及会话的任何内容都很痛苦

如果您关注业务逻辑,请考虑以下方法;

  • 实施服务层
    • 处理业务逻辑不可变对象
    • 转换可由自定义适配器或Spring convertors
    • 处理
    • 将视图和业务逻辑之间的关注分开
    • 更好的可测试性(如果这是一个词)
  • 管理内存中对象数据库而不是会话的临时状态
    • 支持分布式复制,以便实现HA
    • 支持事务行为以保持一致性
    • 易于测试
    • 在您的简历上看起来很酷

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