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

EJB 開發常見 12 大疑難雜症:深度解析與最佳實踐

     編輯:J2EE

EJB(Enterprise JavaBeans)作為 Java EE 核心組件模型,功能強大但概念較重,開發者常遇到困惑。本文彙整 12 個高頻問題,從規範內容、類型區別、生命週期、事務管理到調用流程,提供清晰解答與實戰建議。

1. EJB 2.0 規範涵蓋哪些角色?核心是什麼?

EJB 2.0 定義六大角色:Bean 提供者、應用程式組裝者、EJB 容器、部署工具、EJB 服務提供者、系統管理員。EJB 容器是核心,負責 Bean 的創建、銷毀、激活/鈍化、資料庫連接等生命週期管理。相關技術棧包括 JSP、Servlet、JNDI、JDBC、JMS 等。

2. Java Bean vs. Enterprise JavaBean:本質區別

  • Java Bean:可重用組件,無嚴格規範,通常有無參建構子、實作 Serializable,相當於 COM 進程內組件,不可跨進程訪問。
  • EJB:分散式組件,基於 RMI 實現遠程訪問(跨進程、跨機器),必須部署於 WebSphere、WebLogic 等容器中,客戶端透過容器代理訪問真實 Bean。

3. EJB 底層技術與核心 Bean 類型區別

EJB 基於 JNDI、RMI、JTA 等技術。三大 Bean 類型:

  • Session Bean:執行伺服器端業務邏輯(如存取資料庫、調用其他 EJB),非持久。
  • Entity Bean:代表持久資料實體(資料庫記錄),持久化存活。
  • Message Driven Bean (MDB):非同步訊息處理。

Session Bean 細分:

  • Stateful:維護客戶端狀態,每用戶一實例,記憶體佔用較大。
  • Stateless:無狀態,實例共享,容器從池中任意分配,效能較佳。

4. 生命週期與事務管理

  • Stateless Session Bean:實例由容器池管理,客戶端調用時容器任意分配現有實例。
  • Stateful Session Bean:首次調用創建專屬實例,後續調用分派給該實例。
  • Entity Bean:生命週期長,隨資料存在而存活,容器崩潰不影響,支援容器管理 (CMP) 或 Bean 管理 (BMP) 持久化。

事務管理採用 OMG OTS、Sun JTS/JTA、X/Open XA 等標準。

5. 六大角色與三大核心介面

六角色確保不同廠商實現互操作。三大介面:Remote/Local(業務方法)、Home/LocalHome(工廠:建立/移除/查找)、Bean 類(實作邏輯)。

6. 容器提供的核心服務

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

7. EJB 規範禁止操作

不可操作執行緒/AWT/靜態欄位/IO/本地庫;不可實作伺服器功能;不可將 this 作參數/返回值;不可迴圈調用。

8. Remote vs. Home 介面職責

  • Remote:定義業務方法,供客戶端調用。
  • Home:工廠介面,負責建立、移除、查找 EJB 實例。

9. Bean 實例生命週期管理策略

  • 池化管理(Stateless、Entity、MDB):建立後不銷毀,重用實例。
  • 快取管理(Stateful、Entity):透過激活/鈍化(序列化)維持狀態,限制實例數量。

10. 激活/鈍化機制詳解

以 Stateful Session Bean 為例:快取大小限制並發實例數;依 LRU/MRU 算法在激活/鈍化間遷移;客戶端調用時若無綁定實例,從鈍化存儲(序列化)還原,觸發 ejbActivate/ejbPassivate 回調。

11. EJB 類型完整分類

  • Session Bean:Stateful / Stateless
  • Entity Bean:BMP / CMP
  • Message Driven Bean

12. 客戶端調用 EJB 標準流程

  1. 設定 JNDI 初始化上下文(Factory、Provider URL)。
  2. 查找 Home 介面。
  3. 調用 create() 獲取 Remote 介面。
  4. 透過 Remote 介面調用業務方法。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved