I have recently upgraded my REST API to use jersey 2.x and now I am unable to retrieve JSON body params the way I used to, the methods simply do not get called anymore. My g
At time of writing, Jersey 2.x integrates with the following modules to provide JSON support:
See below the steps required to use Jackson as a JSON provider for Jersey 2.x:
Adding Jackson module dependencies
To use Jackson 2.x as your JSON provider you need to add jersey-media-json-jackson module to your pom.xml file:
org.glassfish.jersey.media
jersey-media-json-jackson
2.25.1
To use Jackson 1.x it'll look like:
org.glassfish.jersey.media
jersey-media-json-jackson1
2.25.1
Registering Jackson module
Besides adding the dependency mentioned above, you need to register JacksonFeature (or Jackson1Feature for Jackson 1.x) in your Application / ResourceConfig subclass:
@ApplicationPath("/api")
public class MyApplication extends Application {
@Override
public Set> getClasses() {
Set> classes = new HashSet>();
classes.add(JacksonFeature.class);
return classes;
}
}
@ApplicationPath("/api")
public class MyApplication extends ResourceConfig {
public MyApplication() {
register(JacksonFeature.class);
}
}
If you don't have an Application / ResourceConfig subclass, you can register the JacksonFeature in your web.xml deployment descriptor. The specific resource, provider and feature fully-qualified class names can be provided in a comma-separated value of jersey.config.server.provider.classnames initialization parameter.
jersey.config.server.provider.classnames
org.glassfish.jersey.jackson.JacksonFeature
The MessageBodyWriter provided by Jackson is JacksonJsonProvider.
For more details, check the Jersey documentation about support for common media type representations.