Repository navigation
[improve][build] Upgrade Jakarta and servlet APIs within the Jakarta EE 10 level - #26354
Merged
Merged
Conversation
…EE 10 level - jakarta.activation-api 2.1.3 -> 2.1.4 - angus-activation 2.0.2 -> 2.0.3 - jakarta.xml.bind-api 4.0.2 -> 4.0.5 - javax.servlet-api 3.1.0 -> 4.0.1 Each API is kept at the level its Jetty 12.1 environment actually implements. jakarta.xml.bind-api 4.0.5 is exactly what jetty-ee10 12.1.12 declares. javax.servlet-api moves to 4.0.1 because the Jetty ee8 environment ships jetty-servlet-api 4.0.x, i.e. it implements Servlet 4.0 rather than the Servlet 3.1 the catalog previously pinned. Note on javax.servlet-api: this is the API the PIP-472 AdditionalServlet plugin SPI compiles against, so raising it widens that public plugin surface from Servlet 3.1 to Servlet 4.0. Plugins already compiled against Servlet 3.1 continue to work, since Servlet 4.0 is backward compatible; what changes is that new plugins may start relying on Servlet 4.0 API. Deliberately not upgraded, because they would move Pulsar past Jakarta EE 10 and away from the Jetty ee10 environment: - jakarta.ws.rs-api 3.1.0 (4.0.0 is Jakarta REST 4.0, EE 11, and needs Jersey 4.x) - jakarta.annotation-api 2.1.1 (3.0.0 is EE 11) - jakarta.servlet-api 6.0.0 (jetty-ee10 12.1.12 declares 6.0.0; Servlet 6.1 is the ee11 environment) - jakarta.validation-api 3.0.2 (Bean Validation 3.1 is EE 11) Assisted-by: Claude Code (Opus 5)
nodece
approved these changes
Aug 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
Several Jakarta API artifacts have newer patch releases within the Jakarta EE 10 level Pulsar
targets. Separately,
javax.servlet-apiwas pinned at Servlet 3.1 while the Jetty ee8 environmentthat consumes it actually implements Servlet 4.0.
Modifications
gradle/libs.versions.toml:Plus the corresponding jar names in the server and shell distribution
LICENSE.bin.txtfiles, and anupdated comment in the catalog explaining the servlet level pairing.
Each API is kept at the level its Jetty 12.1 environment actually implements. Checking the Jetty
12.1.12 POMs directly:
org.eclipse.jetty.ee10:jetty-ee10declaresee10.jakarta.xml.bind.api.version = 4.0.5— exactlywhat this PR moves to;
org.eclipse.jetty.ee8:jetty-ee8declaresee8.jetty.servlet.api.version = 4.0.9(
org.eclipse.jetty.toolchain:jetty-servlet-api), i.e. the ee8 environment implements Servlet 4.0,not the Servlet 3.1 previously pinned.
Please note:
javax.servlet-apiwidens a public plugin surfacejavax.servlet-apiis what the PIP-472AdditionalServletplugin SPI compiles against. Raising itfrom 3.1 to 4.0 widens that public plugin API surface. Plugins already compiled against Servlet 3.1
continue to work, since Servlet 4.0 is backward compatible; what changes is that new plugins may
start relying on Servlet 4.0 API. Flagging it explicitly because it is effectively a one-way door.
Deliberately not upgraded
These would move Pulsar past Jakarta EE 10 and out of step with the Jetty ee10 environment, so they
are left alone:
jetty-ee1012.1.12 declares 6.0.0; Servlet 6.1 belongs to the ee11 environmentNote that
jakarta.validation-apiis not declared directly by any Pulsar module, but the versioncatalog drives the
pulsar-dependenciesenforced platform, so a bump there would still pin BeanValidation 3.1 globally for the swagger and Jersey transitives.
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Verified locally with
./gradlew sanityCheckand./gradlew checkBinaryLicense.Does this pull request potentially affect one of the following parts:
The public API impact is the
AdditionalServletplugin SPI moving from Servlet 3.1 to Servlet 4.0,described above.