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

基於 EJB 架構的分散式商務預訂系統設計與實現

     編輯:關於JSP

EJB 技術規範

EJB 非產品而是組件事務監控標準(Sun 定義):可伸縮、事務型、多用戶安全、一次編寫多平台部署。屬於 J2EE 伺服器端組件模型核心。

三層架構模型

  1. 客戶層: 接收輸入、校驗、展示結果(瀏覽器動態創建/銷毀進程)。
  2. 業務邏輯層:
    • Web 層(請求接收):JSP、Applet、Servlet 接收 HTTP 請求,轉發 EJB 層,回傳結果。
    • EJB 層(請求處理):監聽/處理/資料庫操作進程,執行核心業務,協調 Entity Bean,必要時持久化。
  3. 數據層: 屏蔽數據源變化,提供存儲/檢索服務,僅修改連接配置即可遷移數據庫。

EJB 組件分類

類型子類型特徵
Entity Bean容器管理持久化 (CMP)容器自動映射字段至表、自動 INSERT/UPDATE/DELETE
Bean 管理持久化 (BMP)開發者手寫 JDBC 代碼,容器僅回調生命周期
Session Bean有狀態專屬客戶端、維護會話狀態、協調 Entity Bean 完成任務
無狀態通用可重用、無會話狀態、適合高併發

客艙預訂系統核心組件

  • CabinBean (CMP):封裝客艙實體,主鍵 CabinPK
  • CustomerBean (CMP):封裝客戶,主鍵 CustomerPK
  • CruiseBean (CMP):封裝航線,主鍵 CruisePK
  • ReservationBean (CMP):主鍵 CruiseID+CabinID,防止重複預訂(選擇與下單間隔期並發風險)
  • TravelAgentBean (Stateful Session):預訂工作流編排,listAvailableCabins() 查詢可用艙位,bookPassage() 執行預訂、計費、生成票據(使用 CreditCard、Ticket 輔助類)
  • ProcessPaymentBean (Stateless Session):支付處理,ByCheck() ByCash() ByCredit() 三種事務方法

TravelAgentBean 開發詳解

Remote Interface

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

Home Interface

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

Bean Class

實現上述所有業務邏輯(篇幅限制略),在 IBM VisualAge for Java 中開發,Entity Bean 相對 Session Bean 更易生成。

部署與運行

WebSphere Application Server 為 EJB 容器,Servlet (ReservationServlet) 調用 TravelAgent.bookPassage(),成功後轉 ProcessPaymentServlet 調用 ProcessPaymentBean 完成收費。

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