У меня возникли проблемы с NPE при попытке использовать POJOS в качестве параметров. Я развертываю war maven, генерируемый на tomcat 7 с конфигурациями по умолчанию.
Сигнатура моего метода выглядит так.
@POST
@Produces({MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_JSON})
@Path("/do/")
public OtherPojo doSomething(MyPOJO pojo) {
Pojo аннотируется с помощью @XmlRootElement. Однако, когда я вызываю URL-адрес, pojo имеет значение null, и поэтому я получаю NPE. Мой пом.xml
<dependency>
<groupId>org.glassfish.jersey.ext</groupId>
<artifactId>jersey-metainf-services</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
Пробовал с джерси 2.13 и 2.6 и с джексоном 2.4
Кроме того, я не настраивал приложение, в моих классах просто есть аннотация
@Path("/somePath/")
public class SomeClass {
И это настроено в моем web.xml
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.beer.routes</param-value>
</init-param>
Я читал, что мне может понадобиться зарегистрировать JacksonFeature, но я не мог понять, как это сделать.