可以cxf-rs返回一个接口集合

时间:2013-10-18 02:03:47

标签: rest cxfrs

我定义了一个接口IUser,并希望返回一个IUser集合,如下所示:
   @GET @Path("getuserlist/{id}/") @Produces("application/xml") List<IUser> getUserList(@PathParam("id") String id);

当我在cxf 2.7.6下部署作为休息服务时,出现以下错误:     没有为响应类ArrayList找到消息正文编写器。 谁能帮我解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试将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类并通过调用setList()方法设置实现IUser接口的对象List并返回SimplePOJO类。

您可能需要将以下内容添加到IUser界面以及实现IUser的类中。

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)