Modernizing a business-critical public-sector application
Technical modernization of an established Java application while ongoing domain and regulatory changes continued.
Results / operational benefits
- Current Java, Jakarta EE, and application-server platform in production
- Viable migration path for incrementally replacing EJB 2 persistence
- EJB 2 and JPA operating side by side, with persistence behavior easier to verify automatically
- Modernization alongside ongoing domain development
Initial situation
An application grown over many years needed technical modernization while ongoing domain and regulatory changes still had to be delivered reliably.
Goal
Move the application to a current Java and Jakarta EE platform, replace outdated persistence components, and create a safer foundation for continued development.
Contribution
- Migrated the complete project from Java 11 to Java 21
- Migrated Java EE 8 to Jakarta EE 10 and Payara 5 to Payara 6, followed by production deployment
- Planned the migration path from EJB 2 entity beans to JPA
- Created around 20–30 JPA entities
- Built a proof of concept and production implementation allowing EJB 2 and JPA to operate side by side against the existing database
- Built an H2 test setup for automated verification of existing persistence behavior
- Expanded and stabilized unit and integration tests
- Made database changes reproducible with Liquibase
Technology (excerpt)
- Java 21
- Jakarta EE 10
- JPA
- Liquibase
- JUnit
- Mockito
- Kafka
- Docker
Role
Senior Java Engineer tasked with planning and technically implementing the Java, Jakarta EE, and Payara migration; five months of hands-on delivery in a team of approximately two to five developers
