0

サーバーコードで JAX-RS Jersey と JAXB を使用してサービスを実装しています。リソースへの入力としてxmlを送信しています。リソースでは、JAXBContextを使用してxmlをオブジェクトに変換しています。xml が 1 つのルート要素で構成されている場合、私のリソースは機能しています。お気に入り

<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();
4

1 に答える 1

0

まず、使わないreq.getInputStream()。代わりに、入力ストリームを関数の引数として指定します。

public Response addEmp(InputStream stream) {

次に、入力 XML が有効なドキュメントではありません。XML にはルート要素が必要です。1 つの入力ストリームでいくつかの要素を指定することはできません。代わりに、JAXBラッパーを使用してください。

于 2013-01-04T10:05:14.397 に答える