Skip to content

Upgrade to Java 17 and Jakarta EE 9+#1

Open
devin-ai-integration[bot] wants to merge 1 commit intomasterfrom
devin/1768204437-java17-jakarta-upgrade
Open

Upgrade to Java 17 and Jakarta EE 9+#1
devin-ai-integration[bot] wants to merge 1 commit intomasterfrom
devin/1768204437-java17-jakarta-upgrade

Conversation

@devin-ai-integration
Copy link
Copy Markdown

Summary

This PR upgrades the xAPI LMS Integration application from Java 8 to Java 17 LTS and migrates from javax.servlet (Servlet API 2.3) to jakarta.servlet (Jakarta EE 9+). This is a "Traditional Upgrade" that maintains the existing WAR deployment architecture while modernizing the Java stack.

Key changes:

  • Java version: 1.8 → 17
  • Servlet API: javax.servlet:servlet-api:2.3jakarta.servlet:jakarta.servlet-api:6.1.0
  • Maven compiler plugin: 3.8.1 → 3.11.0
  • Maven war plugin: added 3.4.0 (required for Java 17 compatibility)
  • smiley-http-proxy-servlet: 1.6 → 2.0
  • commons-validator: 1.4.1 → 1.9.0
  • basiclti-util: 1.2.1-SNAPSHOT → 1.2.1-jakarta-SNAPSHOT
  • web.xml schema: DTD 2.3 → Jakarta EE 6.0
  • All javax.servlet.* imports migrated to jakarta.servlet.*

Review & Testing Checklist for Human

  • CRITICAL: basiclti-util dependency - The basiclti-util:1.2.1-jakarta-SNAPSHOT dependency was built locally from a modified version of the basiclti-util-java library. CI will fail because this artifact is not available in Maven Central. You'll need to either: (1) publish the Jakarta-compatible version to a repository, (2) include the modified basiclti-util-java as a submodule, or (3) find an alternative LTI library that supports Jakarta EE.
  • Deployment environment - This application now requires Tomcat 10+ (or another Jakarta EE 9+ compatible servlet container). Tomcat 9 and earlier will NOT work.
  • LTI launch validation - Test that LTI launches from an LMS still validate correctly with the modified basiclti-util library
  • Proxy functionality - Verify xAPI requests are correctly proxied to the LRS with the upgraded smiley-http-proxy-servlet 2.0
  • End-to-end test - Deploy to Tomcat 10+, perform an LTI launch, and verify xAPI statements can be sent through the proxy

Notes

The upstream basiclti-util-java library has not been updated for Jakarta EE. To make this upgrade work, I modified a local copy of that library to use jakarta.servlet instead of javax.servlet and installed it to the local Maven repository. This is a temporary workaround that needs a proper solution before merging.

Link to Devin run: https://app.devin.ai/sessions/6503e1b8fdf240ca9243a9664d978ac3
Requested by: @sandeepparekh-droid

- Update Java version from 1.8 to 17
- Update Maven compiler plugin from 3.8.1 to 3.11.0
- Add Maven war plugin 3.4.0 for Java 17 compatibility
- Replace javax.servlet:servlet-api:2.3 with jakarta.servlet:jakarta.servlet-api:6.1.0
- Update smiley-http-proxy-servlet from 1.6 to 2.0
- Update commons-validator from 1.4.1 to 1.9.0
- Update basiclti-util to 1.2.1-jakarta-SNAPSHOT (Jakarta EE compatible)
- Update web.xml schema from DTD 2.3 to Jakarta EE 6.0
- Migrate all javax.servlet imports to jakarta.servlet in Java files

Co-Authored-By: sandeep.parekh@codeium.com <sandeep.parekh@codeium.com>
@devin-ai-integration
Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants