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

基於 EJB 的商務預訂系統架構設計與實作

     編輯:Java 相關知識

隨著企業級應用複雜度提升,EJB (Enterprise JavaBeans) 技術在大型分散式系統開發中扮演關鍵角色。本文深入解析 EJB 規範定義、基於 EJB 的三層架構模型、EJB 組件分類(Entity Bean 與 Session Bean),並以「商務預訂系統」為實戰案例,展示從架構設計到核心組件開發的完整流程。

一、 EJB 技術本質與定位

EJB 不是具體產品,而是 Sun 公司制定的伺服器端組件技術規範。其核心目標是提供一種標準化的組件架構,用於開發與部署基於組件的分散式商務應用。採用 EJB 架構的應用具備三大核心特性:

  • 可擴縮性:支援叢集部署與負載平衡。
  • 事務型:容器管理事務 (CMT) 保障資料一致性。
  • 多用戶安全:內建角色基礎存取控制 (RBAC)。

總結來說,EJB 是一個組件事務監控的標準伺服器端組件模型,實現「編寫一次,部署於任意支援 EJB 規範的應用伺服器」。

二、 基於 EJB 的系統架構模型

EJB 架構屬於典型的三層式分層架構,如圖 1 所示:

基於 EJB 的應用架構模型

圖 1:基於 EJB 的應用架構模型

1. 客戶層

  • 負責接收用戶輸入、進行前端驗證與處理。
  • 顯示伺服器端返回的執行結果。
  • 通常由瀏覽器動態建立/銷毀的客戶端進程組成(JSP/Servlet/Applet)。

2. 業務邏輯層

系統核心,進一步劃分為兩個子層:

  • 請求接收層 (Web 層):接收瀏覽器請求,分派給底層處理,將結果回傳前端。由 JSP、Servlet、Web Applet 構成。
  • 請求處理層 (EJB 層):包含監聽進程、處理進程、資料庫操作進程。負責核心業務邏運算、事務管理、實體 Bean 持久化操作,並與資料層交互。

3. 資料層

  • 為業務邏輯層提供資料服務:儲存處理結果、提供查詢資料。
  • 屏蔽資料源變更:資料庫遷移時僅需修改連接配置,業務邏輯不受影響。

三、 EJB 組件分類詳解

商務預訂系統架構

圖 2:商務預訂系統架構

1. Entity Bean (實體 Bean)

對應現實世界持久化業務實體(通常映射資料庫記錄)。特點:

  • 封裝業務概念的狀態與行為。
  • 允許開發者封裝業務資料與規則。
  • 持久化管理方式分為:
    • 容器管理持久化 (CMP):容器自動處理資料庫映射與 CRUD。
    • Bean 管理持久化 (BMP):開發者手寫 JDBC 代碼操作資料庫,容器僅管理生命週期回調。

2. Session Bean (會話 Bean)

代表客戶端的一次會話或任務流程,透過 Home Interface 建立,專屬於單一客戶端。分類:

  • 無狀態 Session Bean:不保留會話狀態,適合通用業務邏輯,可重用、可擴縮。
  • 有狀態 Session Bean:維護客戶端會話狀態,代表客戶完成特定任務流程。

Session Bean 常作為 Facade 協調多個 Entity Bean 之間的交互,完成複雜業務流程。

四、 商務預訂系統核心組件設計

系統基於 J2EE 平台,採用 WebSphere Application Server 部署。核心流程:用戶登入 → 選擇頁面導航 → 選擇可用客艙 → 提交預訂 → 支付處理。

核心 EJB 組件清單

組件名稱類型主鍵/標識職責描述
CabinBeanEntity Bean (CMP)CabinPK封裝船艙實體資訊
CustomerBeanEntity Bean (CMP)CustomerPK封裝客戶實體資訊
CruiseBeanEntity Bean (CMP)CruisePK封裝航線實體資訊
ReservationBeanEntity Bean (CMP)CruiseID + CabinID記錄預訂歷史,防止重複預訂 (雙重預訂問題)
TravelAgentBeanStateful Session Bean-核心業務流程協調:查詢可用艙位、執行預訂、計費、生成票據
ProcessPaymentBeanStateless Session Bean-支付處理:支援支票、現金、信用卡三種付款方式

關鍵業務邏輯:TravelAgentBean

  • listAvailableCabins():提供可預訂艙位列表供前端下拉選單。
  • bookPassage():核心預訂邏輯,包含信用卡扣款、艙位鎖定、票據生成。
  • 內部使用 CreditCard 類封裝支付資訊,Ticket 類生成電子票證。

支付處理:ProcessPaymentBean

  • 定義三個事務方法:ByCheck()、ByCash()、ByCredit()。
  • 無狀態設計,適合高併發支付場景。

五、 開發環境與代碼示例

開發環境:IBM VisualAge for Java。實體 Bean 開發相對 Session Bean 更便捷(工具支援 CMP 映射生成)。以 TravelAgentBean 為例:

1. 遠端介面

package com.titan.travelagent;
import java.rmi.RemoteException;
import javax.ejb.FinderException;
import com.titan.cruise.Cruise;
import com.titan.customer.Customer;
import com.titan.processpayment.CreditCard;

public interface TravelAgent extends javax.ejb.EJBObject {
    public void setCruiseID(int cruise) throws RemoteException, FinderException;
    public int getCruiseID() throws RemoteException, IncompleteConversationalState;
    public void setCabinID(int cabin) throws RemoteException, FinderException;
    public int getCabinID() throws RemoteException, IncompleteConversationalState;
    public int getCustomerID() throws RemoteException, IncompleteConversationalState;
    public Ticket bookPassage(CreditCard card, double price) throws RemoteException, IncompleteConversationalState;
}

2. Home 介面

package com.titan.travelagent;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import com.titan.customer.Customer;

public interface TravelAgentHome extends javax.ejb.EJBHome {
    public TravelAgent create(Customer cust) throws RemoteException, CreateException;
}

3. Bean 實現類

需實現遠端介面與 Home 介面定義的所有業務方法。受篇幅限制此處省略具體實現代碼,核心邏輯包含:狀態管理、實體 Bean 查找與操作、事務邊界控制、票據生成等。

六、 總結

本文通過商務預訂系統案例,展示了 EJB 組件技術在分散式商務應用中的架構優勢:清晰的分層結構、標準化的組件模型、容器管理的事務與持久化服務。實體 Bean 負責領域資料持久化,會話 Bean 協調業務流程,兩者配合實現高內聚、低耦合的企業級應用架構。

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