内容
目录
常规
请首先阅读常规 迁移指南页面,了解适用于 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 的解码和规范化过程已得到澄清。
添加了新方法和类,以提供对当前请求和/或关联连接的唯一标识符的访问。
Server Pages 3.1
当 EL 表达式包含未知标识符时,添加了一个引发 PropertyNotFoundException
的选项。
Expression Language 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 及更高版本中,连接器属性
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/