用于xml中多个元素的jax rs资源

时间:2013-01-04 09:50:56

标签: java rest jax-rs

我在我的服务器代码上使用JAX-RS Jersey和JAXB来实现服务。我发送xml作为资源的输入,在资源中我使用JAXBContext将xml转换为对象。当xml由一个根元素组成时,我的资源正在工作。 喜欢

<employee>
<id>1</id>
</employee>

但是当我提供多个元素时,我得到的是UnmarshalException。

<employee>
<id>1</id>
</employee>
<employee>
<id>2</id>
</employee>     

我的资源看起来像这样。

@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)    
 public Response addEmp(@Context HttpServletRequest req)throws JAXBException,IOException{
        JAXBContext jaxb = JAXBContext.newInstance(Employee.class);
        Employee emps = (Employee)jaxb.createUnmarshaller().unmarshal(req.getInputStream());
        emplist.add(emps);
        return Response.ok().entity(success).build();

1 个答案:

答案 0 :(得分:0)

首先,不要使用req.getInputStream()。而是将输入流指定为函数的参数:

public Response addEmp(InputStream stream) {

其次,您的输入XML不是有效文档。 XML必须有一个根元素。您不能在一个输入流中提供一些元素。相反,请使用JAXB wrapper