首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

EJB 3.0 會話 Bean 深度解析:無狀態與有狀態的生命週期與適用場景

     編輯:Java 相關知識

會話 Bean 定位

對應 MVC 中 Controller,封裝業務邏輯、協調 Entity Bean、存取資源。分為無狀態與有狀態兩類。

無狀態 Session Bean (@Stateless)

  • 特徵:不維護客戶端會話狀態,實例間無差別。
  • 生命週期:實例化 → 放入池 → 多客戶共用 → 客戶消亡 Bean 仍存活 → 容器銷毀。
  • 優勢:實例池機制支撐高併發、可伸縮性強、效能最佳。
  • 注意:若 Bean 有實例變數,會被所有調用者共享,導致線程安全問題,實務上應避免非最終態欄位。

有狀態 Session Bean (@Stateful)

  • 特徵:維護特定客戶端會話狀態,狀態駐留記憶體不持久化。
  • 生命週期:每客戶專屬實例 → 客戶存活期間保持狀態 → 客戶結束/移除 → Bean 銷毀。
  • 機制:容器以快取 (caching) 管理實例,而非池化;支援 @PrePassivate/@PostActivate 序列化/還原。
  • 適用:購物車、多步驟精靈流程等需跨請求保持狀態場景。

選型指南

場景推薦理由
高併發、無會話狀態業務 (查詢、統計、批次)@Stateless池化複用、無同步開銷、線性擴展
多步驟交互、需記住用戶中間狀態@Stateful天然支援會話狀態、容器管理生命週期
集群環境@Stateless 優先有狀態需 Session 複製/持久化,增加複雜度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved