Upgrading org.eclipse.jetty:jetty-servlet 10 to 11
Breaking10.0.26 → 11.0.26Breaking14Security22Platform1Deprecated8New46Changed272Fixed239Other83
BreakingUpgrade verdict
14 breaking changes and a platform requirement change and 22 security fixes.
In plain terms
- Code that changed HTTP response headers inside the onResponseBegin listener callback no longer works.
- Removes the unmaintained jminix module since hawtio provides the same features.
- Drops modules that are no longer supported.
- The old distribution package is gone; set up a jetty-home plus your own base directory instead.
Must act Top 5 of 45 that need code or config changes
What you must change
Breaking14
Modifying HTTP headers in HttpChannel.Listener#onResponseBegin is no longer possible with Jetty 10.
HttpChannel.Listener#onResponseBeginRemoves the unmaintained jminix module since hawtio provides the same features.
jminixRemoves unsupported modules.
jetty-distribution is removed; use jetty-home with a proper ${jetty.base}.
jetty-distributionjetty-home${jetty.base}Removes the jetty-all uber artifact.
jetty-allRemoves jetty-all.
jetty-allRemoves jetty-distribution in favor of jetty-home.
jetty-distributionjetty-homeRemoves unused methods on SessionHandler.
SessionHandlerDisallows webapps overriding jakarta.* container classes per Servlet 5.0 Section 15.2.1.
Jetty 11.x uses the jakarta.servlet namespace; use Jetty 10.x for javax.servlet.
jakarta.servletjavax.servletClassic Jetty logging facade is replaced with slf4j-api usage.
slf4j-apiManaging Configuration within a WebAppContext has a new API that is self ordering.
ConfigurationWebAppContextComplete WebSocket refactoring requires code updates for Jetty API or embedded Jetty users.
Uses the
jakarta.* namespace for new Jakarta EE 9 "Big Bang" artifacts.Security22
HTTP2Session cleanups that address CVE-2025-5115.
HTTP2SessionFixes CVE-2024-22201, where HTTP/2 connections are not closed after idle timeout when TCP is congested.
Addresses CVE-2023-44487, the HTTP/2 rapid reset denial-of-service vulnerability.
Addresses GHSA-58qw-p7qm-5rvh, providing a workaround for direct users of XmlParser.
XmlParserAddresses CVE-2023-40167.
Addresses CVE-2023-36478.
Addresses CVE-2023-36479.
Rejects "+" prefixed values in Content-Length (CVE-2023-40167).
Content-LengthAddresses CVE-2023-41900.
Cleans up Multipart handling for CVE-2023-26048.
Cleans up Cookie Cutter handling for CVE-2023-26049.
Fixes CVE-2022-2047: invalid URI parsing may produce an invalid HttpURI.authority.
HttpURI.authorityFixes CVE-2022-2048: invalid HTTP/2 requests can lead to denial of service.
Fixes CVE-2022-2191: SslConnection does not release pooled ByteBuffers in case of errors.
SslConnectionByteBuffersResolves CVE-2021-34429.
Resolves CVE-2021-28169 and CVE-2021-34428.
Fixes CVE-2021-28165, where the Jetty server uses high CPU when a client sends data with length greater than 17408.
Fixes CVE-2021-28164 by normalizing ambiguous URIs.
Fixes CVE-2021-28163 by excluding the webapps directory from the deployment scan.
Addresses and resolves CVE-2020-27223.
Fixes an open redirect when sending a custom Host header to a URL with no trailing forward-slash.
Fixes CWE-331 in the DigestAuthentication class.
DigestAuthenticationPlatform1
Jetty 11.x requires a minimum of Java 11.
Deprecations to plan for
Deprecated8
Better documents the deprecation of
ContextHandler.setCompactPath(boolean).ContextHandler.setCompactPath(boolean)Deprecates PushCacheFilter.
PushCacheFilterDeprecates the CGI Servlet (CVE-2023-36479).
CGI ServletDeprecates PushSessionCacheFilter.
PushSessionCacheFilterDeprecates log4j 1.x support.
log4jDeprecates UnixSocket JNR support.
UnixSocketDeprecates support for UTF16 encoding in URIs.
Adds a DeprecationWarning Decorator.
API changes
Generated by DepDelta from published JVM bytecode. Not mixed with prose notes.
- removed:
static field Source.Origin.JAVAX_API: Source.Origin - added:
static field Source.Origin.JAKARTA_API: Source.Origin