假设我有一个名为Person的名字和姓氏的简单类。还假设我有一个简单的休息服务,其中get端点返回一个人员列表。
public class Person {
// name and last name properties plus getters and setters
}
// Service
@Stateless
@LocalBean
@Path("test")
public class SimpleRestService {
//Suppose people is initialized and contains actual people
private ArrayList<Person> people;
@GET
@PATH("/people/iterable")
public Iterable<Person> getPeople(){
//This one works
return people;
}
@GET
@PATH("/people/collection")
public Collection<Person> getPeople(){
//This one fails. HTTP 500. Nothing on server.log ...
return people;
}
}
fisrt endpoin test / people / iterable 可以正常工作,而 test / people / collection 将因HTTP 500而失败。有没有人知道这个?
答案 0 :(得分:0)
Jersey有一个注册表,它将@Produces
中的MIME类型与声明返回的方法的Java类型以及处理该对象以生成响应有效负载的处理程序相关联。它有一个处理程序,可将Iterable
和List
转换为JSON Array
。它还有一个将Map
转换为JSON Object
的处理程序。 Java接口Collection
的问题在于没有迹象表明它是应该表示为顺序集合(JSON Array
)还是无序的命名项集合(JSON Object
)。因此,默认情况下没有注册处理程序将Collection
转换为application/json
。这是应用程序服务器上记录的异常中的消息所指示的内容。