Я реализовал службу Джерси с помощью встроенного Jetty + Джексон. Хотя, когда я пытаюсь использовать его с ресурсом GET (который не потребляет и не производит JSON), он работает, он НЕ с ресурсом POST. Сообщение на консоли написано:использованием Джексон JSON библиотека Джерси + Jetty
SEVERE: MessageBodyReader not found for media type=application/json, type=class com.delta.model.EnableDisableMessage, genericType=class com.delta.model.EnableDisableMessage
ПОСТ ресурс:
@POST
@Path("/enable")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public String enablePost(EnableDisableMessage enable) throws InterruptedException {
logger.debug("within Proxy POST method..." + enable.toString());
return "it worked!";
}
Модель:
package com.delta.model;
public class EnableDisableMessage {
private String cell;
private String instruction;
public EnableDisableMessage(String cell, String instruction) {
super();
this.cell = cell;
this.instruction = instruction;
}
public String getCell() {
return cell;
}
public void setCell(String cell) {
this.cell = cell;
}
public String getInstruction() {
return instruction;
}
public void setInstruction(String instruction) {
this.instruction = instruction;
}
}
Я также реализован этот класс конфигурации, как описано на Джерси спецификации:
@ApplicationPath("/")
public class MyApplication extends ResourceConfig {
public MyApplication() {
packages("com.delta.model;com.delta.rest");
register(JacksonFeature.class);
// property(CommonProperties.MOXY_JSON_FEATURE_DISABLE, true);
}
}
pom.x мл:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.2.3.v20140905</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.2.3.v20140905</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jetty-http</artifactId>
<version>2.7</version>
</dependency>
<!--
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.7</version>
</dependency>
-->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.7</version>
</dependency>
</dependencies>
Вам нужен конструктор no-arg в 'EnableDisableMessage'. Но это не актуальная проблема. Это будет следующий вопрос, как только вы исправите текущую проблему :-). Я не уверен, почему вы получите это исключение, если зарегистрируете JacksonFeature. Мне любопытно посмотреть, как вы строите сервер. Вы уверены, что 'MyApplication' даже используется? Можете ли вы поделиться кодом, в котором вы создаете сервер/приложение. –