我发现了一些我无法理解的奇怪行为。
我测试了 4 个类似的例子:
1
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response produce() {
List<Book> books = Arrays
.asList(new Book[] {
new Book("aaa", "AAA", "12345"),
new Book("bbb", "BBB", "09876")
});
return Response.ok(books).build();
}
2
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Book> produce() {
List<Book> books = Arrays
.asList(new Book[] {
new Book("aaa", "AAA", "12345"),
new Book("bbb", "BBB", "09876")
});
return books;
}
3
@GET
@Produces(MediaType.APPLICATION_XML)
public List<Book> produce() {
List<Book> books = Arrays
.asList(new Book[] {
new Book("aaa", "AAA", "12345"),
new Book("bbb", "BBB", "09876")
});
return books;
}
4
@GET
@Produces(MediaType.APPLICATION_XML)
public Response produce() {
List<Book> books = Arrays
.asList(new Book[] {
new Book("aaa", "AAA", "12345"),
new Book("bbb", "BBB", "09876")
});
return Response.ok(books).build();
}
一切都在#1、#2、#3 中有效,但第 4 个示例抛出:
找不到 MessageBodyWriter 类型的响应对象:java.util.Arrays$ArrayList 媒体类型:application/xml。
我在 Wildfly 9 上运行它,我想知道它是否与 RestEasy 或 JaxRS 一般有关?我知道我可以通过在 GenericEntity 中包装集合来修复它,但我不理解这种不一致的行为。