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

EJB 基礎知識體系速查:版本差異、類型劃分、生命週期、事務與角色全景圖

     編輯:Java 相關知識

前言:構建 EJB 知識骨架

EJB 作為 J2EE 核心組件模型,概念繁多、版本演進快。本文以問答形式,系統梳理 EJB 2.0/1.1 差異、與 JavaBean 區別、三大 Bean 類型與生命週期、事務機制、六大角色、容器服務、禁止操作、調用流程,構建完整知識骨架,適合面試複習、架構決策參考、團隊知識對齊。

核心問答匯總

Q1: EJB 2.0 規範包含哪些內容?與 1.1 差異?

六大角色:Bean 提供者、應用組合者、EJB 容器、EJB 配置工具、EJB 服務提供者、系統管理員。
核心:EJB 容器管理創建、銷毀、激活、鈍化、數據庫連接等。
2.0 新增:本地接口、CMP 2.0(EJB QL、關係映射)、Message Driven Bean、Home 業務方法、ejbSelect。

Q2/Q4: EJB vs JavaBean 核心區別?

維度JavaBeanEnterprise JavaBean
規範無嚴格規範,任意類可為 Bean嚴格 EJB 規範
運行模型進程內(本地 COM 類比)進程間、分布式(DCOM 類比)
訪問方式直接調用遠程 RMI,經容器代理
容器依賴Web 容器(如 Tomcat)EJB 容器
持久化實現 Serializable容器管理(CMP)或 Bean 管理(BMP)
典型用途GUI 組件、DTO分布式業務組件

Q5: Session Bean 與 Entity Bean 生命週期、事務管理?

Session Bean

  • Stateless:容器決定生命週期,池化複用,無狀態,客戶調用隨機分派實例
  • Stateful:首次調用創建專屬實例,綁定客戶,維護會話狀態,超時/移除銷毀

Entity Bean

  • 生命週期長,狀態持久,數據在即對象在,容器崩潰不影響
  • 持久化管理:CMP(容器管理,聲明式)或 BMP(Bean 管理,自寫 JDBC)

事務技術棧

OMG OTS、Sun JTS/JTA、X/Open XA 接口。容器聲明式管理(CMT)或 Bean 程序化管理(BMT)。

Q6: EJB 六大角色與三個核心對象?

六角色:EJB 組件開發者、應用組合者、部署者、EJB Server 提供者、EJB Container 提供者、系統管理員。
三對象:Remote(Local) 接口、Home(LocalHome) 接口、Bean 類。

Q7: EJB 容器提供的核心服務?

生命週期管理、代碼生成、持久化管理、安全、事務管理、鎖與並發管理。

Q8: EJB 規範禁止操作?

  1. 操作線程/線程 API
  2. AWT 操作
  3. 實現服務器功能(ServerSocket 等)
  4. 讀寫靜態字段
  5. 直接 IO 訪問文件系統
  6. 加載本地庫
  7. 傳遞 this 引用
  8. 循環調用

Q9: Remote/Home 接口作用?

  • Remote:定義業務方法,客戶端調用入口
  • Home:工廠接口,創建、移除、查找(Entity)EJB 實例

Q10: Bean 實例生命週期與緩存/池機制?

Bean 類型管理機制核心流程
Stateless Session / Entity / MDB池化創建 → 設置上下文 → 業務調用 → 歸池(不銷毀)
Stateful Session / Entity緩存 + 激活/鈍化創建 → 綁定客戶 → 業務調用 → 閒置鈍化(序列化存儲) → 激活(反序列化恢復) → 移除

鈍化/激活鉤子:ejbPassivate() / ejbActivate()。

Q11: EJB 三大類型與細分?

  • Session Bean:Stateful / Stateless
  • Entity Bean:BMP / CMP
  • Message Driven Bean:異步消息消費

Q12: 客戶端調用 EJB 四步法?

  1. 設置 JNDI 工廠屬性與服務地址
  2. JNDI 查找 Home 接口
  3. Home.create() 獲取 Remote 接口
  4. 通過 Remote 調用業務方法

Q13: 底層技術基座?

JNDI(命名)、RMI(遠程調用)、JTA(事務)。

Q14: Stateful vs Stateless 記憶體與狀態對比?

維度StatefulStateless
狀態記錄記錄調用者狀態,一用戶一實例不記錄,多用戶共享實例
記憶體佔用高低
適用場景向導流程、購物車、會話上下文無狀態服務、高併發業務

EJB 3.0+ 現代化提示

  • Home/Remote 接口 → @Remote/@Local 註解
  • CMP → JPA Entity,EntityManager 替代 Home
  • 部署描述符 → 註解 + 可選 XML 覆蓋
  • 生命週期回調 → @PostConstruct/@PreDestroy/@PrePassivate/@PostActivate
  • 依賴注入 → @EJB/@Resource/@PersistenceContext

總結

EJB 知識體系龐大但邏輯自洽。掌握三大類型、兩種會話模式、兩種持久化、容器六大服務、聲明式事務、六角色分工,即持有 EJB 架構決策的核心鑰匙。版本演進不改核心模型,註解簡化了形式,契約精神長存。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved