Я пытаюсь настроить игрушечное приложение (которое может когда-нибудь превратиться в настоящее приложение). У меня проблема с Уинком и Джексоном. У меня есть два приложения: одно запускает wink-сервер на причале и, похоже, отлично предоставляет некоторые данные JSON; один запускает wink-client на причале и отлично получает данные JSON. Проблема заключается в автоматической десериализации данных JSON обратно в мой Java-бин.
Вот код, который я использую в своем клиентском действии подмигивания:
RestClient client = new RestClient();
Resource resource = client.resource("http://localhost:8081/helloworld");
User user = resource.accept(MediaType.APPLICATION_JSON).get(User.class);
Вот ошибка, которую я получаю, когда пытаюсь запустить действие Struts:
java.lang.RuntimeException: No javax.ws.rs.ext.MessageBodyReader found for type class my.package.structure.User and media type application/json. Verify that all entity providers are correctly registered.
org.apache.wink.client.internal.handlers.ClientResponseImpl.readEntity(ClientResponseImpl.java:123)
org.apache.wink.client.internal.handlers.ClientResponseImpl.getEntity(ClientResponseImpl.java:65)
org.apache.wink.client.internal.handlers.ClientResponseImpl.getEntity(ClientResponseImpl.java:52)
org.apache.wink.client.internal.ResourceImpl.invoke(ResourceImpl.java:186)
org.apache.wink.client.internal.ResourceImpl.get(ResourceImpl.java:294)
my.package.structure.action.HelloWorldAction.execute(HelloWorldAction.java:29)
...
Если я заменю последнюю строку в первом фрагменте кода следующей строкой, все будет работать нормально и отлично.
String message = resource.accept(MediaType.APPLICATION_JSON).get(String.class);
ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(message, User.class);
Понятно, что данные передаются нормально, но проблема, похоже, заключается в том, что класс JacksonJsonProvider не зарегистрирован в клиенте Wink. Я видел много способов зарегистрировать провайдера на Wink-сервере, но не на Wink-клиенте.
Можно ли сделать так, чтобы первый фрагмент кода работал правильно? Если да, то как?
(Кроме того, другая проблема может заключаться в том, что мне не хватает аннотаций в моем классе User. Сейчас их нет. Может быть, мне нужны некоторые...)