Мое приложение использует REST (JAX-RS Джерси) интерфейс. Когда я выполняю его в Eclipse, всем прекрасном. Объекты области аннотируются, я не использую XML-файлы для остальных отображение.
Теперь я создал автономный JAR с помощью плагина блока знатока, который упаковывает приложение и все зависимости в единственном, исполняемом файле JAR. Это также, кажется, работает.
Но когда я запускаю приложение и запрашиваю объект с сервера, Джерси жалуется, что он не может найти читателя тела сообщения:
com.sun.jersey.api.client.ClientHandlerException: A message body reader for Java type, class de.rybu.atuin.core.entity.User, and MIME media type, application/json, was not found
Какие-либо идеи, почему это происходит?
Править: После того, как я спал ночь по нему, я заметил, что это жалуется на JSON..., но я использую только XML для сериализации. Странно.
Я исправил проблему и, наверное, знаю, как: -)
Мои ресурсы были аннотированы следующим образом:
@Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Path(CONTEXT_ADDRESS)
public class UserResource
{
}
Мой клиент использовал обратный порядок:
WebResource wr = ...
User user = wr.accept(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_XML_TYPE).get(new GenericType<User>(){});
Я не знаю, что изначально было причиной проблемы, но я полностью удалил поддержку JSON, и теперь она работает. Возможно, было бы достаточно просто поменять порядок JSON и XML в клиенте, но я этого не пробовал.