может ли cxf-rs вернуть набор интерфейсов

Я определяю интерфейс IUser и хочу вернуть коллекцию IUser следующим образом:
@GET @Path("getuserlist/{id}/") @Produces("application/xml") List<IUser> getUserList(@PathParam("id") String id);

Когда я развертываю службу отдыха в cxf 2.7.6, я получаю следующую ошибку: не найдено средство записи тела сообщения для класса ответа ArrayList. Кто может помочь мне решить эту проблему? Благодарность!


person user2070865    schedule 18.10.2013    source источник


Ответы (1)


Попробуйте обернуть ArrayList в POJO, например. нравится:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class SimplePOJO 
{
    private List<IUser> list;

    public List<IUser> getList() {
        return list;
    }

    public void setList(List<IUser> list) {
        this.list = list;
    }
}

Затем измените свою службу, чтобы вернуть класс POJO:

@GET 
@Path("getuserlist/{id}/") 
@Produces("application/xml") 
SimplePOJO getUserList(@PathParam("id") String id);

В реализации службы все, что вам нужно сделать, это создать экземпляр класса SimplePOJO и установить свой список объектов, реализующих ваш интерфейс IUser, вызвав метод setList() и вернув класс SimplePOJO.

Возможно, вам потребуется добавить следующее в интерфейс IUser, а также в класс, реализующий ваш IUser.

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
person Emil C    schedule 25.10.2013