0
Я пытаюсь вернуть POJO в формате JSON с Джерси, однако я получаю следующее сообщение об ошибке:Джерси со встроенным Jetty - MessageBodyWriter не нашли применение/JSON
Однако, когда я бегу вверх приложение я получаю:
SEVERE: MessageBodyWriter not found for media type=application/json, type=class com.uk.jacob.model.Person, genericType=class com.uk.jacob.model.Person.
у меня есть следующий Джерси ресурс
@Path("")
public class TestResponse {
@GET
@Path("hello")
@Produces(MediaType.APPLICATION_JSON)
public Response paramMethod() {
CacheControl control = new CacheControl();
control.setMaxAge(60);
Person jacob = new Person("Jacob");
return Response
.ok(jacob)
.cacheControl(control)
.build();
}
}
с простой Person POJO
public class Person {
private String firstName;
public Person(String firstName){
this.firstName = firstName;
}
public String getFirstName(){
return firstName;
}
}
Со следующим внедренного Jetty конфигурации
public static void main(String[] args) {
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
context.setContextPath("/");
String webPort = System.getenv("PORT");
if(webPort == null || webPort.isEmpty()) {
webPort = "3000";
}
Server jettyServer = new Server(Integer.valueOf(webPort));
jettyServer.setHandler(context);
ServletHolder jerseyServlet = context.addServlet(ServletContainer.class, "/*");
jerseyServlet.setInitOrder(0);
jerseyServlet.setInitParameter("jersey.config.server.provider.packages", "com.uk.jacob.api");
jerseyServlet.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
try {
jettyServer.start();
jettyServer.join();
} catch (Exception e) {
e.printStackTrace();
} finally {
jettyServer.destroy();
}
}
Как вы можете видеть выше, я позволил POJOMappingFeature
jerseyServlet.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Мне также пришлось добавить зависимость привязки данных. com.fasterxml.jackson.core джексон-DataBind intended_verion –