Não é possível ativar o suporte à ligação JSON com base em POJO para Jackson em Jersey 2.0
Eu estou usando Jersey para produzir JSON (com POJO mapeado através de Jackson) e Jetty (iniciar a partir do método principal).
Ele funciona perfeito para Jersey 1.x .:
ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
"com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages", "service");
sh.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
...
context.addServlet(sh, "/rest/*");
Server server = new Server(8080);
server.setHandler(context);
server.start();
Agora migrei meu projeto para Jersey 2.0 e não habilitei a vinculação JSON baseada em POJO nele. Recebo o seguinte:org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class business.entity.ExampleEntity, genericType=class business.entity.ExampleEntity.
Obviamente,com.sun.jersey.api.json.POJOMappingFeature
não é mais válido como Jersey vai paraorg.glassfish
odocumentação diga o seguinte:
Para usar o Jackson como seu provedor JSON (JAXB / POJO) você precisa registrar o JacksonFeature e um ContextResolver para o ObjectMapper (se necessário) no seu Configurable (cliente / servidor).
Mas não consigo descobrir como fazer corretamente no meu caso.
Eu criei um poucoprojeto para esta pergunta:
ramomaster
- Exemplo trabalhado para Jersey 1.17.1;
ramojersey-2.0-migration
- não trabalhando tentativa de migrar para Jersey 2.0 -teste falhou;
ramojersey-2.0-migrate-client-only
- tentativa de não trabalho para usar o cliente Jersey 2.0 com o servidor Jersey operando 1.17.1 -teste falhou.
A pergunta é: como habilitar a ligação JSON baseada em POJO em Jersey 2.0