Skip to content

Replace Jersey with SpringMVC #56

@rmcdouga

Description

@rmcdouga

The current codebase relies on Eclipse Jersey (via spring-boot-starter-jersey) for several things:

  1. Jersey of the default REST client used by the FluentForms libraries to talk to AEM
  2. Jersey endpoints are used for the AEM proxy code that reverse-proxys calls from HTML5 and Adaptive Forms to AEM.

Spring provides equivilent functionality to the functionality Jersey provides, so the reliance on Jersey is not absolutely necessary (it was just convenient because we had more experience using Jersey than Spring MVC).

The development of the Jersey dependency can sometimes lag behind the Spring development (e.g. no Spring Boot 4 compatible version of the jersey starter was available during the Spring Boot 4 release candidate cycle - it only became available around the time of release). This can lead to delays in adopting new versions of Spring.

It's also a general best practice to eliminate unnecessary dependencies as it makes the project easier to maintain and the progress of the project is less constrained (each dependency comes with it's own constraints that are added to the including project).

The current codebase allows the default REST client in item 1) above to be replaced with the Spring Rest client. The work involved would be to implement the existing endpoint logic (i.e. item 2) using Spring MVC.

The plan is to retain the existing Jersey implementation in its own Spring Boot starter. Projects that need to use the existing Jersey implementation could include that Spring Boot starter instead of the normal starter in their pom.xml. The Jersey implementation would then supercede the Spring MVC implementation.

Over time, as confidence in the Spring MVC implementation grows, the Jersey implementations may be removed but that may take some time.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions