Я использую Jersey для создания JSON (с сопоставлением POJO через Jackson) и Jetty (начиная с основного метода).
Он отлично работает для 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();
Теперь я перенес свой проект на Джерси 2.0 и не смог включить в нем привязку JSON на основе POJO, я получаю следующее: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class business.entity.ExampleEntity, genericType=class business.entity.ExampleEntity.
Очевидно, что com.sun.jersey.api.json.POJOMappingFeature
больше не действует, так как Джерси становится org.glassfish
.
В документации говорится следующее:
Чтобы использовать Jackson в качестве поставщика JSON (JAXB/POJO), вам необходимо зарегистрировать JacksonFeature и ContextResolver для ObjectMapper (при необходимости) в вашем Configurable (клиент/сервер).
Но я не могу понять, как это сделать правильно в моем случае.
Я создал небольшой проект для этого вопроса:
ветка master
- рабочий пример для Джерси 1.17.1;
ветка jersey-2.0-migration
- не работает попытка перехода на Джерси 2.0 - проверка не удалась;
ветка jersey-2.0-migrate-client-only
- нерабочая попытка использовать клиент Джерси 2.0 с работающим сервером Джерси 1.17.1 - проверка не удалась.
Вопрос: как включить привязку JSON на основе POJO в Джерси 2.0
jersey-2.0-migrate-server-success
иjersey-2.0-migration-success
они описывают решение и оно прошло проверку! 09.07.2013jersey-media-json-jackson 2.0
(см. обновление вjersey-2.0-migration
), но безjersey-client 2.0
он получает предупреждения, подобные упомянутым в комментариях. 10.07.2013