Upgrading org.eclipse.jetty:jetty-server 10 to 11
Breaking10.0.26 → 11.0.26Breaking13Security25Platform1Deprecated7New47Changed252Fixed239Other102
BreakingUpgrade verdict
13 breaking changes and a platform requirement change and 25 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 Jetty using jetty-home and a separate base directory.
Must act Top 5 of 46 that need code or config changes
Adds org.eclipse.jetty.toolchain:jetty-jakarta-servlet-api 5.0.2.
Drops org.eclipse.jetty.toolchain:jetty-servlet-api.
What you must change
Breaking13
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} instead.
jetty-distributionjetty-home${jetty.base}Removes the jetty-all uber artifact.
jetty-allRemoves the jetty-all artifact.
jetty-allRemoves jetty-distribution in favor of jetty-home.
jetty-distributionjetty-homeRemoves unused methods on SessionHandler.
SessionHandlerJetty 11.x is the first major version to use 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 and embedded-jetty users.
Uses the jakarta.* namespace for new Jakarta EE 9 Big Bang artifacts.
jakarta.*Security25
HTTP2Session cleanups that address CVE-2025-5115.
HTTP2SessionEclipse Jetty's ThreadLimitHandler.getRemote() vulnerable to remote DoS attacks
Moderate · CVSS 5.9Eclipse Jetty: DoS attack triggering OutOfMemory with 100-Continue requests
High · CVSS 7.5Fixes CVE-2024-22201: HTTP/2 connection 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.
Moderate · CVSS 5.3Cleans up Cookie Cutter handling for CVE-2023-26049.
Low · CVSS 2.4Fixes 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 on errors.
SslConnectionHigh · CVSS 7.5Improves SSLConnection buffer handling, resolving CVE-2022-2191.
SSLConnectionHigh · CVSS 7.5Resolves CVE-2021-34429.
Resolves CVE-2021-28169 and CVE-2021-34428.
Low · CVSS 3.5Fixes CVE-2021-28165: jetty server high CPU when client sends data length > 17408.
High · CVSS 7.5Fixes CVE-2021-28164: normalizes ambiguous URIs.
Fixes CVE-2021-28163: excludes the webapps directory from deployment scan.
Addresses and resolves CVE-2020-27223.
Moderate · CVSS 5.3Fixes 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 Java 11 as its minimum Java version.
Deprecations to plan for
Deprecated7
Deprecates PushCacheFilter.
PushCacheFilterDeprecates the CGI Servlet due to 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 SecureRequestCustomizer.JAVAX_SERVLET_REQUEST_CIPHER_SUITE: String - removed:
static field SecureRequestCustomizer.JAVAX_SERVLET_REQUEST_KEY_SIZE: String - removed:
static field SecureRequestCustomizer.JAVAX_SERVLET_REQUEST_SSL_SESSION_ID: String - removed:
static field SecureRequestCustomizer.JAVAX_SERVLET_REQUEST_X_509_CERTIFICATE: String - added:
static field SecureRequestCustomizer.JAKARTA_SERVLET_REQUEST_CIPHER_SUITE: String - added:
static field SecureRequestCustomizer.JAKARTA_SERVLET_REQUEST_KEY_SIZE: String - added:
static field SecureRequestCustomizer.JAKARTA_SERVLET_REQUEST_SSL_SESSION_ID: String - added:
static field SecureRequestCustomizer.JAKARTA_SERVLET_REQUEST_X_509_CERTIFICATE: String