企業級應用面臨結構複雜、外部資源多、事務密集、數據量大、用戶多、安全要求高等挑戰,且需支持 EAI (企業應用集成) 與 B2BI (企業間集成)。J2EE (Java 2 Platform, Enterprise Edition) 作為事實標準,提供統一的容器模型、組件規範與服務 API,支撐構建可擴展、可移植、安全的分布式系統。本文系統闡述企業級架構特徵、J2EE 容器與組件體系、核心服務 API,並以計算機產品銷售系統為例演示端到端架構落地。
一、企業級應用架構核心:MVC 分層
- Model:業務數據處理、存取、加工、綜合 (EJB、JavaBeans、領域模型)。
- View:用戶界面呈現 (JSP/Servlet、Applet、Application Client)。
- Controller:流程控制,映射 View 請求到 Model,回寫結果到 View (Servlet、Filter、Struts Action)。
優勢:職責分離、並行開發、代碼穩定性、易維護升級。
二、企業級資源連接
Model 層需整合:關係數據庫 (JDBC)、ERP/CRM/SCM 等企業信息系統 (JCA)、Legacy 系統、消息中間件 (JMS)、目錄服務 (JNDI/LDAP)、Web Services (JAX-RPC/JAXR/SAAJ)。
三、理想企業級平台 14 大特徵
- 部署/開發/維護高效
- 運行健壯可靠
- 失敗快速恢復
- 海量數據處理
- 百萬級併發用戶
- 高安全性
- 數據高可用
- 快速開發部署新應用
- 組件重用簡化
- 直觀編程模型
- 支持行業標準/API
- 適用中小大各規模
- 成本隨規模線性增長
- 持續技術升級
四、J2EE 容器與組件全景
| 容器 | 組件 | 定位 | 核心能力 |
| Web 容器 | Servlet, JSP | 服務端 | 動態 Web 頁面、Controller 入口、調用 EJB |
| EJB 容器 | Session/Entity/Message-Driven Bean | 服務端 | 分布式事務、安全、生命周期、遠程訪問、核心業務邏輯 |
| Applet 容器 | Applet | 客戶端 | 瀏覽器嵌入、輕量級、僅 JSE API、安全沙箱 |
| Application Client 容器 | Application Client | 客戶端 | 重量級、可用大部分 J2EE 服務/API |
五、核心服務 API 速查
- JDBC:標準 SQL 數據庫訪問 (對應 ODBC)。
- JMS:統一消息模型 (P2P / Pub-Sub),屏蔽 MQ 產品差異 (MQSeries, MSMQ, SonicMQ)。
- JNDI:統一命名/目錄查找 (EJB、DataSource、JMS ConnectionFactory、LDAP/DNS)。
- JTA/JTS:標準事務 API (begin/commit/rollback) 與事務服務實現。
- JCA:EIS 適配器架構 (事務/安全/連接管理),一次開發部署任意 J2EE 服務器。
- JMX:分布式管理 (MBean、SNMP、遠程調用、圖形化控制台)。
- JAAS:認證 (PAM) 與授權 (基於主體訪問控制)。
- JACC:容器與授權提供者契約,插拔式權限引擎。
- JAX-RPC:POJO/EJB 暴露為 SOAP Web Service (WSDL 對應)。
- JAXR:註冊服務客戶端 API (UDDI/ebXML)。
- SAAJ:底層 SOAP 消息構建/解析 (附件支持)。
六、實戰案例:計算機產品銷售系統
業務場景:官網發布產品目錄、接受在線訂單、同步至交易市場、內部員工處理訂單觸發 ERP (倉儲/財務/生產)、納入企業統一運維監控。
架構映射:
- 核心業務:產品目錄管理、訂單管理 → EJB (Session/Entity Bean) 部署於 EJB 容器。
- 持久化:JDBC + JTA 管理數據庫事務。
- Web 呈現:產品瀏覽、下單 → JSP/Servlet (Web 容器)。
- 異步目錄分發:JMS 消息驅動發送至交易市場。
- 對外集成:JAX-RPC/JAXR/SAAJ 封裝 Web Services (WSDL/UDDI)。
- 內部安全:JAAS 認證 + JACC 授權 + JNDI 查找用戶目錄。
- ERP 聯動:JCA 適配器連接 ERP 系統。
- 運維監控:Application Client 管理端 + JMX 監控 MBean。
七、總結
J2EE 以四大容器為骨架、豐富組件為血肉、標準服務 API 為經絡,構建起企業級應用的標準化體系。架構師需根據業務規模、非功能需求、團隊技術棧,靈活選型組件組合 (如輕量級 Web 應用可僅用 Servlet/JSP + JDBC;分布式核心交易需上 EJB + JTA + JCA),在「標準合規」與「務實落地」間找到平衡點。