打包:將組件(EJB、Servlet、JSP 等)組裝為模塊,再將模塊組合為企業應用(EAR)的過程。
部署:在目標環境中安裝、配置並啟動應用,使其可服務請求的過程。
J2EE 規範以 JAR/ZIP 為物理載體,以 XML 描述符為邏輯契約,實現組件的標準化交付與容器無關性。
| 組件類型 | 所屬模塊 | 打包產物 | 描述符位置 |
|---|---|---|---|
| EJB (Session/Entity/Message-Driven) | EJB 模塊 | .jar | META-INF/ejb-jar.xml |
| Servlet、JSP、Filter、Listener、HTML/JS/CSS | Web 模塊 | .war | WEB-INF/web.xml |
| 應用客戶主類、工具類 | 應用客戶模塊 | .jar | META-INF/application-client.xml |
| 資源適配器 (JCA)、原生庫 | 資源適配器模塊 | .rar | META-INF/ra.xml |
EAR 文件 (application.ear) 包含 META-INF/application.xml,聲明所含模塊、安全角色、資源引用等應用級元數據。
application.xml,解決組件間依賴,聲明外部資源需求。現實中一人常兼多角,但邏輯分工有助於責任清晰與流程規範化。
EAR 完美支撐 Web+EJB 應用,但對以下基礎設施資源無法聲明式打包,需管理員手工配置或廠商專有擴展:
這導致跨應用服務器遷移時需重複手工配置,也是後續 Java EE / Jakarta EE 引入 @DataSourceDefinition、@JMSConnectionFactoryDefinition 等註解標準化資源定義的動力。
不同廠商採用不同類加載策略(父優先/子優先/統一加載),影響庫版本隔離與共享。打包時需關注:
$SERVER/lib vs EAR/lib vs WAR/WEB-INF/lib)理解打包部署的核心概念、角色分工、標準結構與固有限制,是掌握 J2EE 應用交付的基礎。下一篇將深入模塊打包策略與最佳實踐。