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

EJB 開發模式全解析:從手工構建到 IDE 集成再到建模驅動

     編輯:Java 程式設計入門

三種主流開發模式對比

模式工具優點缺點適用場景
手工構建JCreator/EditPlus + Ant/Batch理解本質、無依賴、適合學習效率低、易出錯、發布繁瑣教學、簡單項目、無 IDE 環境
IDE 集成JBuilder/IntelliJ/Eclipse + 插件智能提示、一鍵部署、調試集成依賴特定 IDE、配置複雜企業級開發、團隊協作
建模驅動 (MDA)Together ControlCenter / RSA需求可追溯、代碼生成、多平台部署學翐曲線陡、工具昂貴、過度設計風險大型系統、長期維護、嚴格流程

模式一:手工構建完整流程

目錄結構

project/
├── src/                    # Java 源碼
│   └── com/myapp/ejb/
├── deployment/             # 部署描述符
│   ├── ejb-jar.xml
│   └── weblogic-ejb-jar.xml
├── classes/                # 編譯輸出
│   └── META-INF/           # 部署描述符複製至此
├── lib/                    # 生成的 JAR/EAR
└── compilejar.bat          # 構建腳本

構建腳本 (compilejar.bat)


@echo off
mkdir classes
mkdir lib
mkdir classes\META-INF
copy deployment\*.xml classes\META-INF\

javac -d classes -cp "%CLASSPATH%" src\*.java

cd classes
jar cf ..\lib\temp.jar *
cd ..\lib

REM WebLogic EJB 編譯器(預編譯生成存根/骨架)
java weblogic.ejbc -keepgenerated temp.jar MyAppEJB.jar

del temp.jar
cd ..

關鍵點

  • weblogic.ejbc:預編譯器,生成容器所需輔助類
  • 舊版本用 weblogic.ejbc20
  • JBoss 等容器採用運行時反射,無需預編譯

模式二:IDE 集成開發 (以 JBuilder + WebLogic 為例)

集成配置步驟

  1. 安裝 JBuilder Enterprise 版
  2. 配置 WebLogic 集成:Tools → Configure Servers → Add WebLogic
  3. 項目屬性 → EJB Module → 綁定 WebLogic 部署描述符
  4. 使用 EJB 設計器可視化創建 Bean、關係、查詢
  5. 一鍵部署:Run → Deploy to WebLogic

優勢

  • 同步編輯 Java 源碼與部署描述符
  • 圖形化 CMP 字段映射、關係建模
  • 內嵌調試器:斷點、變量檢查、EJB 容器事件追蹤
  • 自動處理 ejbc、打包、部署全流程

模式三:建模驅動開發 (Together ControlCenter)

核心工作流

需求分析 → 用例圖
    ↓
領域建模 → 類圖 (領域模型)
    ↓
架構設計 → 組件圖、部署圖
    ↓
詳細設計 → 序列圖、狀態圖
    ↓
代碼生成 → EJB 完整源碼 + 部署描述符
    ↓
部署驗證 → 一鍵發布到 WebLogic/JBoss/WebSphere
    ↓
往復工程 → 代碼修改自動同步回模型

關鍵特性

  • LiveSource:模型與代碼雙向同步,非一次性生成
  • 模式驅動:應用 EJB 設計模式(Session Facade、Value Object、DAO 等)
  • 多服務器支持:同一模型部署到 WebLogic/JBoss/WebSphere,生成對應描述符
  • 審計與度量:耦合度、複雜度、命名規範自動檢查

EJB 核心開發模式 (代碼層面)

Session Facade


// 統一業務入口,封裝 Entity Bean 訪問
@Stateless
public class OrderFacadeBean implements OrderFacade {
    @EJB CustomerDAO customerDAO;
    @EJB OrderDAO orderDAO;
    
    public OrderDTO createOrder(CustomerDTO customer, List items) {
        // 事務邊界在此
        Customer c = customerDAO.find(customer.getId());
        Order o = new Order(c);
        for (ItemDTO dto : items) {
            o.addLine(new OrderLine(dto.getProductId(), dto.getQty()));
        }
        return orderDAO.save(o).toDTO();
    }
}

Value Object (DTO)


// 遠程接口傳輸數據,避免細粒度遠程調用
public class OrderDTO implements Serializable {
    private Long id;
    private String customerName;
    private List lines;
    private BigDecimal total;
    // getter/setter
}

Local Interface 優化


// 同一 JVM 內調用,避免 RMI 開銷
@Local
public interface OrderDAOLocal {
    Order save(Order order);
    Order findById(Long id);
}

@Stateless
public class OrderDAOBean implements OrderDAOLocal { ... }

遷移建議:從 EJB 2.x 到 3.x / Spring

EJB 2.x 痛點現代解決方案
Home/Remote 接口繁瑣無接口視圖 / @LocalBean
Entity Bean CMP 複雜JPA (Hibernate/EclipseLink)
部署描述符龐大注解配置 / XML 可選
重量級容器Spring / CDI 輕量級容器
測試困難Spring Test / Arquillian / Embedded EJB

理解三種開發模式的演進脈絡,有助於在技術選型時平衡學習成本、開發效率、長期維護性。現代 Java 企業級開發以 Spring Boot + JPA 為主流,EJB 歷史經驗仍為架構設計提供寶貴借鑑。

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