內容
目錄
一般
請先閱讀一般 遷移指南頁面,以了解 Apache Tomcat® 版本間遷移或升級的常見考量事項。
從 10.0.x 遷移至 10.1.x
本節列出已知的 10.0.x 和 10.1.x 之間所有變更,這些變更可能會在升級時造成向下相容性問題。
需要 Java 11
Apache Tomcat 10.1.x 需要 Java 11 或更新版本。這是 Apache Tomcat 10.0.x 和 9.0.x 的變更,後者需要 Java 8 或更新版本。
規格 API
Apache Tomcat 10.1 支援 Jakarta Servlet 6.0、Jakarta Server Pages 3.1、Jakarta Expression Language 5.0、JakartaWebSocket 2.1 和 Jakarta Authentication 3.0 規格。
Servlet 6.0 API
5.0 API 中標示為已過時的全部方法和類別都已移除。
已移除對 RFC 6265 以外的 Cookie 規格支援,並因此淘汰多種方法。
已新增一種新方法,Cookie.setAttribute(String name, String value)
。
已釐清 URI 解碼和正規化的程序。
已新增新方法和類別,以提供對目前要求和/或相關連線的唯一識別碼存取權。
伺服器頁面 3.1
已新增一個選項,當 EL 表達式包含未知識別碼時,會引發 PropertyNotFoundException
。
表達式語言 5.0
EL API 現在在適當的地方使用泛型。
已從 API 中移除已淘汰的 MethodExpression.isParmetersProvided()
方法。
WebSocket 2.1
API JAR 的封裝已變更,以移除重複類別。伺服器 API 現在依賴於用戶端 API JAR。
驗證待定
無變更。
內部 API
雖然 Tomcat 10.1 內部 API 與 Tomcat 10.0 廣泛相容,但已在詳細層級進行許多變更,且它們並非二進位相容。與 Tomcat 內部互動的客製化元件開發人員應檢閱相關 API 的 JavaDoc。
特別要注意的是
- 已移除 10.0.x 中標示為已淘汰的所有程式碼。
- 已從
JreMemoryLeakPreventionListener
中移除多個組態選項,因為 Java 11 起不再有記憶體外洩問題。
升級 10.1.x
當將 Apache Tomcat 實例從一個 Tomcat 10.1 版本升級到另一個版本時,特別是在為 $CATALINA_HOME 和 $CATALINA_BASE 使用個別位置時,有必要確保組態檔中的任何變更(例如新屬性和預設值的變更)都已套用為升級的一部分。為了協助識別這些變更,可以使用下列表單查看 Tomcat 10.1 不同版本中組態檔之間的差異。
Tomcat 10.1.x 值得注意的變更
Tomcat 開發人員的目標是讓每個穩定的修正程式版本都與前一個版本完全向後相容。偶爾,有必要中斷向後相容性才能修正錯誤。在多數情況下,這些變更將不會被注意到。本節列出並非完全向後相容的變更,且在升級時可能會造成中斷。
-
在 10.1.8 起,Connector 屬性
maxParameterCount
的預設值已從 10,000 減少到 1,000。 -
在 10.1.2 起,EL API 不再使用特權區塊來取得執行緒內容類別載入器,除非透過
org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED
系統屬性明確組態為這樣做。在 Apache Tomcat 中使用 EL API 時,不需要設定此系統屬性,因為所有呼叫都已包覆在堆疊中較上層的特權區塊中。如果在 Apache Tomcat 外使用 SecurityManager 下的 EL API,則可能需要這樣做。 - 在 10.1.0-M5 起,先前在 Tomcat 10.0 中標示為已淘汰的 APR 連接器已移除。此外,tomcat-native 函式庫中已移除不需要用於 OpenSSL 的 API。
- 在 10.1.0-M3 起,由於機密傳輸保證,Tomcat 在新增「Cache-Control: private」時不再新增「Expires」HTTP 回應標頭。對於未明確設定自己的標頭,但依賴 Tomcat 先前行為的應用程式,這可能會導致快取行為改變。如果您想要停用快取,您需要在應用程式中明確組態它。請參閱 BZ 65513 以取得更多資訊。
Tomcat 10.1.x 組態檔差異
從下列方塊中選取組態檔、舊版本和新版本,然後按一下「檢視差異」以查看差異。差異將顯示在新分頁/視窗中。
注意:如果沒有差異,您會看到錯誤頁面。
您也可以在工作副本中使用類似下列的 Git 指令
git diff 10.1.0-M1 10.1.0-M2 -- conf/