Скажем, у меня есть простой класс Person с именем и фамилией в качестве свойств. Также предположим, что у меня есть простой сервис для отдыха с получением конечных точек, которые возвращают список людей.Почему служба jax-rs с возвратным типом Iterable <MyClass> работает в то время как коллекция <MyClass> нет?
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 тест/люди/итерацию будет нормально работать, пока тест/люди/Коллекция потерпит неудачу с HTTP 500. Есть ли какой-либо один ключ на этом?
Я не совсем уверен в этом. Он должен делать больше с generics и [TypeEreasure] (http://docs.oracle.com/javase/tutorial/java/generics/erasure.html). Я делал тесты, создавая класс Person и сервисы выше, но я смог равнодушно возвращать как Iterable, так и Collection. Затем я добавил несколько дженериков, и он прекратил работать как для Iterable, так и для Collection. Я попытался воспроизвести тот же самый сценарий, когда мне удалось вернуть Iterable, а не коллекцию, но, к сожалению, я не мог этого сделать. Тогда ... Я не знаю, является ли это по-прежнему действительным вопросом или нет, поскольку я не могу его воспроизвести –