J2EE 應用打包為 EAR(Enterprise Archive),內含一個或多個模塊(EJB、Web、客戶、資源適配器)及應用級部署描述文件 application.xml。模塊既可獨立部署,也可組合部署,靈活支撐分佈式開發與集成。
| 策略 | 描述 | 適用場景 | 優缺點 |
|---|---|---|---|
| 每 EJB 一模塊 | 每個 EJB 獨立 JAR,含自身部署描述符 | 高度可重用組件、第三方組件集成 | 重用性最高,但模塊數量多,依賴管理複雜 |
| 所有 EJB 一模塊 | 所有 EJB 打包在單一 JAR | 小型應用、原型開發、緊耦合業務 | 最簡單,但耦合度高,難以獨立升級 |
| 按功能域分模塊 | 相關業務 EBP 歸類打包(如訂單、用戶、支付) | 企業級應用、微服務前身架構 | 推薦:平衡重用與簡單,利於分佈式部署與遠程調用優化 |
ejb-module.jar
├── com/.../ # EJB 實現類、Home/Remote 接口
├── META-INF/
│ ├── ejb-jar.xml # 必須:結構與組裝信息
│ └── jboss.xml # 可選:容器專有配置(事務、安全、JNDI 綁定)
└── 依賴的第三方 JAR # 放入 MANIFEST.MF Class-Path 或打包進 lib/
ejb-client.jar,隱藏實現類,減小客戶端體積並保護知識產權。ejb-jar.xml 聲明 <prim-key-class>java.lang.Object</prim-key-class>,部署時再具體化。<table-name> 或容器專有映射文件。WEB-INF/web.xml、classes/、lib/。應用客戶模塊:打包為 JAR,含 Main-Class 清單屬性與 application-client.xml,運行於客戶端容器(ACC),通過 EJB Client JAR 訪問服務端。
資源適配器 (RAR):實現 JCA 規範,連接外部 EIS(ERP、大型機、消息系統),不運行於 J2EE 容器內,而是作為橋接器,部署於應用服務器但不經歷「激活」過程。
應用組裝者通過配置模塊間的 <ejb-ref>、<resource-ref>、<ejb-link> 解決依賴。同一 EAR 內模塊可用 ejb-link 直接引用;跨 EAR 需配置全局 JNDI 名稱。組裝者需確保同一組件在不同模塊中的描述一致。
模塊打包不僅是文件歸檔,更是架構邊界的體現。合理的模塊劃分(推薦功能域策略)、標準化結構、客戶端 JAR 分離、依賴聲明規範,共同構建可維護、可擴展、可分佈式部署的 J2EE 應用基石。