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

Enterprise JavaBeans 組件全景解析 (二):程式設計模型、介面代理、容器架構與 Bean 類型詳解

     編輯:Java 相關知識

EJB 程式設計模型三大特徵

  • 物件導向: 基於 Java 天然 OO
  • 分散式/位置透明: 客戶端無感知 Bean 實際位置
  • 代理模式: 客戶端透過 Home/Remote 代理物件存取 Bean,不直接接觸 Bean 實例

核心介面與委派機制

Bean 類別必須實作

  • javax.ejb.SessionBean 或 javax.ejb.EntityBean
  • 生命週期方法:ejbCreate()、ejbActivate()、ejbPassivate()、ejbRemove()、setSessionContext()

兩大強制介面 (由容器生成實作類)

委派流程

// 客戶端程式碼
CartHome home = (CartHome) PortableRemoteObject.narrow(
    initialContext.lookup("applications/shopping_cart"), CartHome.class);
Cart cart = home.create();           // Home Object 建立 EJB Object
cart.addItem(item29);                // EJB Object 委派給 Bean 實例
cart.purchase();
cart.remove();
  • 客戶端調用 Home.create() → 容器實例化 Bean → setSessionContext() → ejbCreate()
  • 業務方法調用:Client → EJB Object (Stub) → 容器攔截 (事務/安全/並發) → Bean 實例
  • 並發由容器自動處理,開發者無需撰寫同步代碼

EJB Server 與 Container 分工

介面擴展自慣稱職責
Remote InterfaceEJBObject (→ java.rmi.Remote)EJB Object暴露業務邏輯方法,客戶端調用入口
Home InterfaceEJBHome (→ java.rmi.Remote)Home Object生命週期管理:create/remove/finder

容器將伺服器端服務從 Bean「剝離」,使 Bean 無平台綁定、專注業務邏輯。

Session Bean vs Entity Bean 深度對比

元件角色說明
EJB Server執行環境提供者TP Monitor、CORBA Runtime、Web Server 等皆可適配;IBM WebSphere 即將其整合於應用伺服器
EJB ContainerBean 運行時管理者運行於 Server 內,對應用透明;負責安全、並發、事務、Passivation、工具支援 (部署、監控、持久化映射)
特性Session BeanEntity Bean
代表語意單一客戶端的業務流程/工作階段持久化資料實體 (資料庫列/物件)
共享性不共享,專屬於一客戶端多用戶並發存取
生命週期短,通常等同客戶端會話長,跨伺服器重啟存活
持久化僅 Bean-managed (BMP)BMP 或 Container-managed (CMP)
故障恢復伺服器故障即銷毀伺服器故障後仍存活

Session Bean 細分

  • Stateless: 無狀態,所有實例等價,容器池化管理,不 Passivate,create() 不保證新實例
  • Stateful: 保持會話狀態,容器可 ejbPassivate() 序列化至磁碟、ejbActivate() 還原,開發者須確保狀態可序列化;叢集環境需注意同步支援
  • 事務性:可實作 SessionSynchronization 接收事務狀態通知,或用 UserTransaction (BMT)

Entity Bean 核心機制

  • Primary Key + Finder: Home 介面提供 findByPrimaryKey() 等查詢方法
  • 狀態: Pooled (未關聯 EJB Object) ↔ Ready (關聯 EJB Object,可服務業務呼叫)
  • 同步回調: 容器調用 ejbLoad() (從 DB 載入) / ejbStore() (寫回 DB) 保持一致性
  • 並發控制: 容器負責 (資料庫鎖/序列化存取/多實例+DB 並發控制),Bean 開發者無需處理

下一篇預告

第三部分將詳細講解部署描述符細節、CORBA 整合深度、三層架構完整案例。

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