J2EE(現 Jakarta EE)定義了構建企業級應用的標準技術棧。本文系統梳理 13 項核心技術,按「數據訪問、命名目錄、業務組件、遠程通信、Web 展示、數據交換、消息事務、郵件激活」八大領域分類,助你建立全棧架構視野。
// 早期硬編碼
Connection conn = DriverManager.getConnection(url, user, pass);
// 現代最佳實踐:JNDI 註冊 DataSource + 連接池
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/MyDS");
Connection conn = ds.getConnection();
| 維度 | EJB 2.x/3.x | Spring |
|---|---|---|
| 容器依賴 | 強依賴應用服務器 | 輕量級容器,可嵌入 Tomcat/Jetty |
| 事務管理 | 聲明式(XML/注解),容器級 | 聲明式(@Transactional),平台無關 |
| 依賴注入 | @EJB/@Inject (CDI) | @Autowired/@Inject,生態更豐富 |
| 現狀 | Jakarta EE 規範,WildFly/Payara 支援 | 事實標準,Spring Boot 生態統治 |
// 生產者
@Resource ConnectionFactory cf;
@Resource Queue queue;
JMSContext ctx = cf.createContext();
ctx.createProducer().send(queue, "訂單創建: 12345");
// 消費者
@JmsListener(destination = "order.queue")
public void onMessage(Message msg) { ... }
UserTransaction.begin/commit/rollback| 場景 | 推薦技術棧 | 避坑提示 |
|---|---|---|
| 傳統單體應用 | Servlet + JSP/JSTL + JDBC + JavaMail | 業務邏輯別寫在 JSP,分層架構 |
| 微服務架構 | Spring Boot + Spring Cloud + JPA + JMS(RabbitMQ/Kafka) | EJB 過重,JTS 跨語言困難 |
| 異構系統集成 | REST/gRPC + JSON/ProtoBuf,必要時 CORBA | Java IDL 僅用於 legacy CORBA 系統 |
| 高併發異步處理 | JMS + MDB(Message Driven Bean)或 Spring @JmsListener | 注意消息冪等、重試、死信隊列 |
「J2EE 13 項技術不只是 API 列表,更是企業級架構演進的歷史見證。掌握它們的設計初衷與適用邊界,才能在技術選型時游刃有餘。」