內容
目錄
一般
請先閱讀一般 遷移指南頁面,以了解 Apache Tomcat® 版本之間遷移或升級時應考量的常見事項。
從 9.0.x 遷移至 10.0.x
本節列出 9.0.x 和 10.0.x 之間所有已知變更,這些變更可能會在升級時造成向後相容性問題。
需要 Java 8
Apache Tomcat 10.0.x 需要 Java 8 或更新版本。這與 Tomcat 9.0.x 相同。
規格 API
Apache Tomcat 10 支援 Jakarta Servlet 5.0、Jakarta Server Pages 3.0、Jakarta Expression Language 4.0、JakartaWebSocket 2.0 和 Jakarta Authentication 2.0 規格。
Tomcat 9.0.x 和 Tomcat 10.0.x 之間有一個重大的變更。規格 API 所使用的 Java 套件已從
Tomcat 可在部署時使用 Apache Tomcat Jakarta EE 遷移工具將現有的 Web 應用程式從 Java EE 8 轉換至 Jakarta EE 9。若要使用此功能,應將 Web 應用程式置於 Host legacyAppBase
資料夾(預設名稱為 webapps-javaee
),且它們會轉換為 Host appBase
資料夾(預設名稱為 webapps
)中的等效 Jakarta EE Web 應用程式。
或者,Apache Tomcat Jakarta EE 遷移工具或任何類似的轉換工具都可以在事先使用,以受益於更快的部署時間和更精確的轉換組態選項。
Servlet 5.0 API
Java 套件已從
伺服器頁面 3.0
Java 套件已從
表達式語言 4.0
Java 套件已從
WebSocket 2.0
Java 套件已從
驗證 4.0
Java 套件已從
內部 API
儘管 Tomcat 10 內部 API 與 Tomcat 9 廣泛相容,但已在詳細層級進行許多變更,且它們並非二進位相容。與 Tomcat 內部元件互動的客製化元件開發人員應檢閱相關 API 的 JavaDoc。
特別要注意的是
GenericPrincipal.getPassword() 已移除。
web.xml 預設值
conf/web.xml
將預設要求和回應字元編碼設定為 UTF-8。
工作階段管理
預設已停用重新啟動時的會話持續性。它可以在
HTTP/2
已從 HTTP/2 連接器移除 HTTP/1.1 和 HTTP/2 連接器之間重複的組態設定,現在它會從相關的 HTTP/1.1 連接器繼承這些設定。
記錄
記錄實作現在只會在有東西要寫入記錄檔時才建立記錄檔。
存取記錄模式
為了與 httpd 對齊,%D
模式現在會以微秒而非毫秒記錄要求時間。若要以毫秒記錄要求時間,請使用 %{ms}T
。
升級 10.0.x
當將 Apache Tomcat 執行個體從一個 Tomcat 10 版本升級到另一個版本時,特別是在為 $CATALINA_HOME 和 $CATALINA_BASE 使用不同的位置時,必須確保將組態檔中的任何變更(例如新屬性和預設值的變更)套用為升級的一部分。為了協助識別這些變更,可以使用下方的表單來檢視 Tomcat 10 不同版本中的組態檔差異。
Tomcat 10.0.x 顯著變更
Tomcat 開發人員的目標是讓每個修補程式版本與前一個版本完全向下相容。偶爾,為了修正錯誤,有必要中斷向下相容性。在多數情況下,這些變更不會被注意到。本節列出未完全向下相容且可能會在升級時造成中斷的變更。
在 10.0.3 之後,
HostConfig.check(String)
方法的語意已變更。該方法會在呼叫方法之前將應用程式標記為已服務,而不是在檢查資源之前將應用程式標記為已服務,然後在檢查完成後將應用程式取消標記為已服務。如果在呼叫方法時將應用程式標記為已服務,則該方法將為 NO-OP。在 10.0.9 之後,由於機密傳輸保證,Tomcat 在加入「Cache-Control: private」時不再加入「Expires」HTTP 回應標頭。這可能會導致未明確設定自己的標頭但依賴 Tomcat 之前行為的應用程式的快取行為發生變更。如果您想要停用快取,您需要在應用程式中明確設定。請參閱 BZ 65513 以取得更多資訊。
在 10.0.11 之後,由於已更新的 Commons FileUpload 分支現在使用
java.nio.file.Files
,使用多部分上傳的應用程式需要確保 JVM 設定有足夠的直接記憶體來儲存所有進行中的多部分上傳。在 10.0.14 之後,系統屬性
org.apache.juli.AsyncLoggerPollInterval
不再使用。
Tomcat 10.0.x 組態檔差異
從下方的方塊中選取組態檔、舊版本和新版本,然後按一下「檢視差異」以查看差異。差異將顯示在新的標籤/視窗中。
注意:如果沒有差異,您將會看到一個錯誤頁面。
您也可以在工作副本中使用類似以下的 Git 指令
git diff 10.0.0 10.0.12 -- conf/