Tomcat 11 與 Jakarta EE 11 技術整合與實踐解析

引言

Tomcat 作為 Apache Foundation 管理的開源 Web 容器,一直是 Java 開發者實現 Web 應用的核心工具。隨著 Jakarta EE 11 的正式發布,Tomcat 11 作為其主要實現者,全面支援新版規範的變更與新增功能。本文將深入解析 Tomcat 11 如何整合 Jakarta EE 11 的技術特性,探討其在安全性、效能與可維護性上的改進,並說明開發者在實際應用中需注意的關鍵點。

技術與規範整合

Jakarta EE 11 規範變更

Java 版本要求:Jakarta EE 11 最低要求 Java 17,此變更確保了與現代 Java 生態的兼容性,並移除了對過時的 Security Manager 的依賴,降低潛在安全風險。

規範清理與更新:Jakarta EE 11 移除了多項過時 API,例如 Servlet、JSP 中的 HTTPUtil 類別,並棄用 HTTP/2 伺服器推送功能,改以 103 早期提示機制優化資源載入效率。同時,明確化 HTTP 標頭處理、異步請求條件與路徑規範化行為,提升行為預測性。

新增功能與改進:Servlet 新增標準請求屬性與重定向控制功能,Expression Language 支援 Optional 處理與陣列、紀錄類型,WebSocket 引入 HTTP 會話讀取 API,安全機制則支援 SHA-256 加密與 RFC 9218 簡化 HTTP 優先級機制。

Tomcat 11 實現狀況

Tomcat 11 完整整合 Jakarta EE 11 規範,完成 TCK 測試套件整合,並改用 JUnit 5 提升測試效率。關鍵功能包括:

  • Servlet & JSP:支援新版 HTTP 標頭處理與異步請求控制
  • WebSocket:實現 HTTP 會話狀態維護
  • Expression Language:移除 JavaBeans 強制依賴,支援 Optional 處理

同時移除 32 位 Windows 支援、HTTP/2 伺服器推送與 Security Manager 相關程式碼,並強化安全性,例如預設縮短表單驗證會話逾時時間、新增 Limit Filter 防範 DDoS 攻擊。

技術細節與實踐考量

RFC 更新與日誌改進

  • 基本認證:修正空白字元處理,確保與 RFC 規範一致
  • 摘要認證:支援 SHA-256 與 MD5 演算法
  • HTTP 優先級機制:改用 RFC 9218 簡化機制

日誌系統新增專用 Logger 追蹤憑證配置,並支援 JSON 格式的訪問日誌,提供秒/毫秒/微秒級時間粒度選項。

性能優化與安全增強

  • FFM(Foreign Function Memory):支援 Java 22 的 OpenSSL 直接呼叫,提升穩定性與效能
  • 虛擬線程(Virtual Threads):在高 I/O 阻塞場景中提升可擴展性,但對非阻塞應用效益有限
  • 會話 Cookie:支援 Partition 屬性設定,強化 Cookie 管理
  • 跨網站請求偽造(CSRF):允許自訂原則屬性於 Realm 中配置

其他功能與限制

  • 錯誤報告:支援將錯誤資訊重導至外部伺服器
  • 工具執行器:提供部署與管理工具
  • 憑證管理:新增日誌記錄器追蹤配置細節
  • 32 位 Windows 支援:僅供特殊需求用戶手動安裝

總結

Tomcat 11 透過全面整合 Jakarta EE 11 規範,實現了 Java 17 的支援、安全機制強化與過時功能淘汰。開發者在遷移至 Tomcat 11 時,需注意 Java 版本升級、移除冗餘功能與配置新日誌與安全機制。此版本的技術整合不僅提升應用效能,也為未來 Jakarta EE 的演進奠定基礎。