Skip to content

build: target Jakarta EE 11 / Servlet 6.1 / Tomcat 11 / Spring 7 (PR 4 of jakarta migration #861) - #936

Open
ismisepaul wants to merge 3 commits into
feat/jakarta-03-pom-fixfrom
feat/jakarta-04-ee11-retarget
Open

ismisepaul wants to merge 3 commits into
feat/jakarta-03-pom-fixfrom
feat/jakarta-04-ee11-retarget

Conversation

@ismisepaul

@ismisepaul ismisepaul commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

PR 4 of the Jakarta migration stack (#861)

Stacked on #935 (PR 3).

Why retarget

The integration branch targeted Jakarta EE 10 / Spring 6.1. Spring 6.1's OSS support ended June 2025 and 6.2's ended June 2026; 7.0 is the only OSS-supported line, and it is built against Jakarta EE 11 (Servlet 6.1). EE 10 → EE 11 keeps the same jakarta.* namespace, so none of the PR 2 rename changes.

Changes

  • jakarta.servlet-api 6.0.0 → 6.1.0
  • Tomcat image 10.1-jre17-temurin → 11.0-jre17-temurin (.env; Tomcat 11 implements Servlet 6.1 and needs Java 17, which we already build with)
  • Spring 6.1.21 → 7.0.10, now set once via a spring.version property
  • spring-context moved to test scope — nothing in src/main imports Spring; it's only used for spring-test's Mock* servlet classes in 36 test files
  • Patch bumps: jakarta.servlet.jsp.jstl-api 3.0.0 → 3.0.2, angus-mail 2.0.3 → 2.0.5
  • Tomcat 11 config patches (moved here from PR 6 so the image build works wherever the Tomcat 11 image is used):
    • docker/tomcat/serverxml.patch regenerated against Tomcat 11.0.27. The old one failed a hunk on Tomcat 11, which broke docker compose build. The HTTPS connector now uses <SSLHostConfig>/<Certificate> instead of the legacy Connector keystore attributes.
    • docker/tomcat/webxml.patch regenerated as an exact diff (GNU patch previously needed fuzz 2 at a −4108-line offset).
    • Dockerfile placeholder substitution updated for the new attribute names.
    • Both patches are verified with the base image's own GNU patch, and in a full Docker smoke test on Tomcat 11.0.27.

Verification

  • Main build still fails only on the 4 SAML servlets (fixed in PR 5).
  • With the 5 SAML servlets and LogoutIT temporarily removed in a scratch copy, mvn test-compile is clean and mvn test: 169 run, 0 failures, 2 skipped (same skips as before) on Temurin 17.

Upgrading an existing Docker environment needs the conf volume removed (documented in PR 8).

Please merge with a merge commit (stack branches can't be force-pushed).

Refs #861

🤖 Generated with Claude Code

- jakarta.servlet-api 6.0.0 -> 6.1.0 (Jakarta EE 11)
- Tomcat base image 10.1 -> 11.0-jre17-temurin (Servlet 6.1 container)
- Spring 6.1.21 -> 7.0.10 via a spring.version property. 6.1 and 6.2 are
  past OSS support; 7.0 is the supported line and is built against
  Servlet 6.1. Spring is only used for spring-test's servlet mocks, so
  spring-context is now test-scoped like the rest.
- jstl-api 3.0.0 -> 3.0.2, angus-mail 2.0.3 -> 2.0.5 (patch bumps)

Refs #861

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings October 22, 2026 19:28

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Full-stack compatibility remains unverified while SAML build fixes and Tomcat 11 runtime validation are deferred to later stacked PRs.

No open issues 🎉

What changed in this PR

This fourth PR in the Jakarta migration stack (#861), stacked on #935, aligns build dependencies and the container image with Jakarta EE 11.

Changes:

  • Upgrades to Servlet 6.1, Spring 7.0.10, and Tomcat 11.
  • Centralizes Spring versions and moves spring-context to test scope.
  • Updates JSTL API and Angus Mail patch versions.
File Description
pom.xml Updates Jakarta and Spring dependencies and limits Spring Context to tests.
.env Selects the Tomcat 11 Java 17 container image.

Review effort: Balanced

This PR moves the base image to Tomcat 11, but the server.xml / web.xml
patches applied during the image build were still written against older
Tomcat config files. On Tomcat 11, serverxml.patch fails one hunk, so
`docker compose build` (the CI build job) failed on every branch between
this one and PR 6, which regenerated them.

Moves those changes here, next to the image change they depend on:
- serverxml.patch regenerated against Tomcat 11.0.27; HTTPS connector
  uses <SSLHostConfig>/<Certificate> instead of the legacy Connector
  keystore attributes
- webxml.patch regenerated as an exact diff (GNU patch previously needed
  fuzz 2 at a -4108 line offset)
- Dockerfile placeholder substitution for the new attribute names

Content is identical to PR 6's; merging up the stack is a no-op there.

Refs #861

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The runtime and TLS upgrade needs final human validation with the complete migration stack once the pending SAML changes restore a clean build.

No open issues 🎉

Review effort: Balanced

@ismisepaul
ismisepaul removed this pull request from stack #943 October 23, 2026 06:26
@ismisepaul
ismisepaul added this pull request to stack #945 October 23, 2026 06:27
@ismisepaul
ismisepaul removed this pull request from stack #945 October 23, 2026 06:28
@ismisepaul
ismisepaul added this pull request to stack #947 October 23, 2026 10:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

2 participants