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

JavaBean 與 EJB 核心差異與協作模式

     編輯:Java 相關知識

定義與定位對比

維度JavaBeanEnterprise JavaBean (EJB)
運行位置客戶端/服務端均可,進程內服務端容器中,遠程可訪問
可視性通常可視(GUI 組件)或非可視數據載體非可視商業邏輯組件
部署方式獨立程序、Applet、ActiveX、JAREJB 容器,需部署描述符
核心契約屬性、事件、方法(Introspection)遠程/本地接口、Home 接口、部署描述符
服務質量無內建,自行實現容器提供:事務、安全、並發、持久化、生命周期
遠程調用不直接支持(需 RMI/WebService 封裝)原生支持 RMI-IIOP/CORBA

JavaBean 核心特徵

  • 公共無參構造器
  • 屬性遵循 getXxx()/setXxx() 命名約定(Boolean 類型可 isXxx())
  • 實現 Serializable 支持持久化/傳輸
  • 可選:事件發射/監聽、BeanInfo 自定義元數據

工具可通過反射自動發現屬性/事件,實現可視化組裝(如 IDE 表單設計器)。

EJB 核心架構

三類 Bean

  • Session Bean:有狀態/無狀態/單例,封裝業務流程
  • Entity Bean (EJB 2.x) / JPA Entity (EJB 3+):持久化領域模型
  • Message-Driven Bean:異步消息消費者

容器服務

  • 聲明式事務(@TransactionAttribute)
  • 角色基礎安全(@RolesAllowed)
  • 依賴注入(@EJB/@Inject)
  • 攔截器、定時器、併發管理

協作模式:JavaBean + EJB

// Web 層:JSF/Struts/Spring MVC Action 使用 JavaBean 作為表單後備對象
public class OrderForm {
    private List cartItems; // JavaBean:可視、可序列化、綁定 UI
    // getter/setter
}

// Service 層:EJB 實現業務邏輯
@Stateless
public class OrderService {
    @EJB InventoryService inv;
    @PersistenceContext EntityManager em;

    @TransactionAttribute(REQUIRED)
    public Order confirm(OrderForm form) {
        // 1. 校驗庫存
        // 2. 創建訂單實體
        // 3. 扣減庫存
        // 4. 發送確認郵件 (MDB)
        return order;
    }
}

Web 層 JavaBean 輕量承載表現層數據,EJB 專注事務性業務邏輯,兩者通過 DTO/VO 轉換解耦。

ActiveX 部署說明

JavaBean 可通過 Beans.instantiate() + COM 橋接器部署為 ActiveX 控件,運行在 IE/Windows 客戶端。EJB 無法直接部署為 ActiveX(服務端組件),但可通過 Web 服務暴露給 ActiveX 客戶端調用。

現代演進:Spring/CDI 替代傳統 EJB

  • Spring Bean / CDI Bean:POJO + 容器管理,輕量級替代 EJB
  • @Component/@Service 替代 @Stateless
  • @Transactional 替代容器事務
  • 嵌入式容器(Spring Boot、Quarkus)簡化部署,無需重型應用服務器

JavaBean 概念泛化為「Plain Old Java Object (POJO)」,成為現代框架核心組件模型。

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