2013-04-04 28 views
1

我的問題有點主觀,可能不在上下文中,所以請原諒我。大型應用程序的會話管理(Java)

我在哪裏,我們需要在不同的地方使用會話的應用工作說,在會議

  1. 存儲用戶偏好。
  2. 在會話中存儲一些屬性。
  3. 用戶配置文件。
  4. 在會話中存儲購物車。

和其他許多事情,更多的是我們需要提供一個乾淨的方式讓其他用戶使用會話。 我知道如何注入會話或使用它,以及它如何工作等,所以這不是我的問題。

我想知道如何創建服務say(SessionService),並讓所有的API都使用它來處理HTTP Session。

有沒有人工作/開發過這樣的實現,如果是的話請分享一下如何做到最好,任何參考都會有幫助。

編輯

我們正在使用Spring Security進行身份驗證和授權

回答

0

我堅信,本次會議應儘可能保留作爲從系統的業務邏輯去耦,是力所能及的。通過一切手段,當在視圖層操作時,提供實用程序來訪問會話,但請記住以下內容;

  • 會話對象本身不是線程安全的;
  • 任何屬性都可以在任何時間
  • 任何屬性都可以通過任何的代碼進行修改來改變
  • 測試任何涉及該會議是痛苦

如果你關注的是業務邏輯再考慮以下方法;

  • 實現一個服務層
    • 把手業務邏輯不可變對象
    • 變換可以通過自定義適配器來處理或Spring convertors
    • 給人視圖和業務邏輯
    • 更好的可測性之間的相關分離(如這是一個字)
  • 管理臨時狀態i n以下的內存對象數據庫,而不是會議
    • 支持分佈式複製,以便HA可以實現
    • 支持事務行爲實現一致性
    • 容易測試
    • 看起來很酷你的簡歷

我希望這有助於。如果沒有更多關於你的目標的信息會有所幫助。

相關問題