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

J2EE 應用打包與部署深度解析(一):核心概念、角色與限制

     編輯:Java 相關知識

什麼是打包與部署?

打包:將組件(EJB、Servlet、JSP 等)組裝為模塊,再將模塊組合為企業應用(EAR)的過程。
部署:在目標環境中安裝、配置並啟動應用,使其可服務請求的過程。

J2EE 規範以 JAR/ZIP 為物理載體,以 XML 描述符為邏輯契約,實現組件的標準化交付與容器無關性。

J2EE 組件與模塊類型

組件類型所屬模塊打包產物描述符位置
EJB (Session/Entity/Message-Driven)EJB 模塊.jarMETA-INF/ejb-jar.xml
Servlet、JSP、Filter、Listener、HTML/JS/CSSWeb 模塊.warWEB-INF/web.xml
應用客戶主類、工具類應用客戶模塊.jarMETA-INF/application-client.xml
資源適配器 (JCA)、原生庫資源適配器模塊.rarMETA-INF/ra.xml

EAR 文件 (application.ear) 包含 META-INF/application.xml,聲明所含模塊、安全角色、資源引用等應用級元數據。

六大標準角色職責

  1. J2EE 產品提供商:應用服務器廠商(WebLogic、WebSphere、JBoss、GlassFish),實現規範 API 與容器運行時。
  2. 應用組件提供商:開發具體業務組件(EJB Bean、Servlet、JSP 頁面、資源適配器)的開發者/團隊。
  3. 應用組裝商:將多組件組裝為 EAR,編寫 application.xml,解決組件間依賴,聲明外部資源需求。
  4. 工具提供商:提供構建、打包、部署工具(Ant/Maven/Gradle、IDE 插件、vendor deploytool)。
  5. 部署者/實施者:將 EAR 安裝至服務器,綁定 JNDI 名稱、配置數據源、安全域、集群節點,生成容器專有配置。
  6. 系統管理員:維護運行環境、監控性能、管理生命週期(啟停、升級、備份)。

現實中一人常兼多角,但邏輯分工有助於責任清晰與流程規範化。

EAR 打包的已知限制

EAR 完美支撐 Web+EJB 應用,但對以下基礎設施資源無法聲明式打包,需管理員手工配置或廠商專有擴展:

  • JDBC DataSource / JMS ConnectionFactory & Destination
  • JMX MBean 註冊
  • JMS 消費者 (Message-Driven Bean 以外的長運行消費者)
  • 應用啟動/停止回調類 (Vendor-specific lifecycle listeners)

這導致跨應用服務器遷移時需重複手工配置,也是後續 Java EE / Jakarta EE 引入 @DataSourceDefinition、@JMSConnectionFactoryDefinition 等註解標準化資源定義的動力。

類加載器視角的打包影響

不同廠商採用不同類加載策略(父優先/子優先/統一加載),影響庫版本隔離與共享。打包時需關注:

  • 共享庫放置位置($SERVER/lib vs EAR/lib vs WAR/WEB-INF/lib)
  • 模塊間可見性(EJB 模塊類對 Web 模塊是否可見)
  • 資源適配器原生庫加載路徑

總結與展望

理解打包部署的核心概念、角色分工、標準結構與固有限制,是掌握 J2EE 應用交付的基礎。下一篇將深入模塊打包策略與最佳實踐。

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