内容
目录
通用
请先阅读常规迁移指南页面,了解适用于 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/