支持JDK 21内置虚拟线程的Tomcat 11发布


需要Java的最低版本现在是Java 21,这是包含内置虚拟线程支持的第一个里程碑。

点击标题下载

已实施的规范版本、所需的最低 Java 版本和更多有用信息可在“哪个版本?”

Tomcat 11 及更高版本的用户应该知道,由于从 Java EE 转移到 Jakarta EE 作为 Java EE 转移到 Eclipse Foundation 的一部分,所有已实现 API 的主要包 javax.*已从jakarta.*. 这几乎肯定需要更改代码以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 11 及更高版本。
已经开发了一个 迁移工具来帮助这个过程。

其他特点:

  • 将实用程序执行器的管理从组件的init()/destroy()方法转移到start()/stop()方法。(markt)
  •  增加 RateLimitFilter,可用于缓解 DoS 和 Brute Force 攻击。(isapir)
  •  在Tomcat的自定义WAR URL处理程序中,移除对使用^字符来分隔WAR文件和WAR内容的支持。当前默认的分隔符*保持不变。(markt)
  •  添加 org.apache.catalina.core.StandardVirtualThreadExecutor,这是一个基于虚拟线程的执行器,可与一个或多个连接器一起使用,以处理这些连接器使用虚拟线程接收的请求。(markt)
  •  66513:在PersistentValve中增加了一个每个会话的Semaphore,以确保在一个Tomcat实例中,每个会话不会有超过一个并发的请求。同时扩展调试日志,以包括请求是否绕过 Valve 阀门,以及如果请求未能获得每个会话Semaphore的原因。(markt)
  •  66609:确保默认的servlet在使用XML输出时,能正确转义目录列表中的文件名。基于Alex Kachanov的第621号请求。(markt)
  •  66618: 在默认 servlet 产生的 XML 目录列表中添加一个数字的最后修改字段,以便在 XSLT 中进行排序。拉动请求 #622 由 Alex Kachanov 提出。(markt)
  •  66621: 如果一个子集合的锁已经过期,试图用WebDAV锁定一个集合可能会不正确地失败。(markt)
  •  66622:从HttpHeaderSecurityFilter中移除xssProtectionEnabled设置,因为所有主要浏览器都已经移除对相关HTTP头的支持。(markt)

Changelog