Я пытаюсь вывести некоторый список документов из ресурса:
@GET
@Produces({MediaType.APPLICATION_XML})
public Response getDocuments(@QueryParam("provider") String provider) {
List<Document> documents = service.getDocuments(provider);
return Response.ok(
new GenericEntity<List<Document>>(
new ArrayList<Document>(documents)) {})
.build();
}
Класс Document не аннотирован @XmlElement (я действительно не люблю комментировать мои красивые объекты такими низкоуровневыми вещами ...), но у меня есть зарегистрированный поставщик для него:
@Service
@Provider
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML, MediaType.WILDCARD})
@Consumes({MediaType.APPLICATION_XML, MediaType.TEXT_XML, MediaType.WILDCARD})
public class JaxRsDocumentSerializer extends
AbstractMessageReaderWriterProvider<Document> {
Когда я вызываю этот ресурс, используя клиент со следующим кодом:
return getResource().path("/documents")
.queryParam("provider", provider)
.accept(MediaType.APPLICATION_XML).get(new GenericType<List<Document>>() {});
Я получаю страшное исключение:
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException:
A message body writer for Java class java.util.ArrayList, and Java type
java.util.List<com.polyspot.model.core.Document>,
and MIME media type application/xml was not found
Я не понимаю, что здесь не так, поскольку я следовал коду, найденному в другом месте, в том числе в SO.
Помощь с благодарностью.