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

EJB Session Bean 規範與限制完整指南 (實現介面、方法命名、異常處理)

     編輯:J2EE

前言

EJB 規範對 Session Bean 類別、Home/Remote 介面施加嚴格限制,確保容器能正確管理生命週期、遠程調用與事務邊界。本文系統整理 EJB 2.x 時代 Session Bean 的強制要求、禁止事項與最佳實務。

Bean 實現類別要求

項目規範要求說明
實現介面implements javax.ejb.SessionBean提供生命週期回調
類別修飾符public,非 final、非 abstract容器需反射實例化
建構子public 無參建構子容器 Class.newInstance()
finalize()禁止 實作清理邏輯放 ejbRemove()/ejbPassivate()
業務方法實現 Remote 介面所有方法;對應 Home 每個 create 有 ejbCreate方法簽名一致,但不拋出 RemoteException
方法修飾符public,非 static、非 final
參數/回傳型別RMI-IIOP 合法型別:基本型別、Serializable 物件、Remote 介面
方法命名不可 ejb 開頭避免與容器回調衝突
異常處理業務異常拋出自訂 Exception;系統級錯誤拋出 javax.ejb.EJBException (RuntimeException)不可拋出 java.rmi.RemoteException
實現 Remote 介面可選 (建議不實現)實現可編譯期檢查漏寫方法,但易誤用 this 代替 context.getEJBObject() 導致運行時錯
實現 SessionSynchronization可選需容器管理事務 (CMT) 且為 Stateful Bean,接收事務邊界回調
繼承其他類允許父類可為另一 Bean 實現類
Helper 方法允許任意修飾符/參數/回傳非介面一部分,容器不管

Home 介面要求

  • 繼承 javax.ejb.EJBHome
  • 方法拋出 java.rmi.RemoteException + CreateException
  • 每個 create(...) 對應 Bean ejbCreate(...)
  • 參數/回傳型別符合 RMI-IIOP

Remote 介面要求

  • 繼承 javax.ejb.EJBObject
  • 所有方法拋出 java.rmi.RemoteException
  • 參數/回傳型別符合 RMI-IIOP
  • 每個方法在 Bean 有對應實現 (編譯器不強制,部署工具檢查)
  • 可繼承其他介面 (父介面需繼承 EJBObject)

關鍵區別:Bean 方法 vs 介面方法

特性Remote/Home 介面方法Bean 實現方法
拋出 RemoteException是否 (拋 EJBException)
事務屬性部署描述符定義不直接定義
this 參考客戶端持有 Stub用 context.getEJBObject() 取得 Remote 引用

命名慣例建議

  • Remote:ShoppingCart
  • Home:ShoppingCartHome
  • Bean:ShoppingCartBean 或 ShoppingCartImpl
  • 可加後綴 SB (Stateful)、SLSB (Stateless) 區分類型
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved