内容

目录

通用

请先阅读常规迁移指南页面,了解适用于 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 Pages 3.1、Jakarta Expression Language 5.0、Jakarta WebSocket 2.1 和 Jakarta Authentication 3.0 规范

Servlet 6.0 API

5.0 API 中所有标记为已废弃的方法和类已移除。

除 RFC 6265 之外的 Cookie 规范支持已移除,因此一些方法也已废弃。

已添加一个新方法:Cookie.setAttribute(String name, String value)

URI 的解码和规范化过程已澄清。

已添加新方法和类,用于访问当前请求和/或关联连接的唯一标识符。

Pages 3.1

添加了一个选项,当 EL 表达式包含未知标识符时,可以抛出 PropertyNotFoundException

Expression Language 5.0

EL API 现在在适当的情况下使用泛型。

已从 API 中移除已废弃的 MethodExpression.isParmetersProvided() 方法。

WebSocket 2.1

API JAR 的打包方式已更改,以移除重复的类。服务器 API 现在依赖于客户端 API JAR。

Authentication 3.0

无更改。

内部 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 版本开始,除非通过 org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED 系统属性明确配置,否则 EL API 不再使用特权块来获取线程上下文类加载器。在 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 版本开始,由于 CONFIDENTIAL 传输保证,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/