0

CXFRestクライアントでPOJOオブジェクトを転送したい。すでにJAXB注釈付きオブジェクトで機能します。だから私はそれをたくさん試みました。

私は試した

 reader.setEntityClass(ObjectPOJO.class);

とのようなもの

 reader.setEntityClass(JAXBElement<ObjectPOJO>.class);

どちらも機能しません。2回目の試行では、コードが間違っています。エンティティクラスをjaxbelementに設定するために取得します。多分それはそれで動作します。

オブジェクトを送信した後:

 Response response = client.path(PATH).post(new JAXBElement<ObjectPOJO>(new QName("pojo"), ObjectPOJO.class, pojoObject));

私はさまざまな試みで自分のエンティティを取得しようとしました。何かのようなもの:

 ObjectPOJO pojo = ((JAXBElement<TenantPOJO>) res.getEntity()).getValue();
  1. ObjectPOJO.classまたはJAXBElement.classを登録する必要があるかどうか誰かが知っていますか。2回目の試行が正しい場合、コードではどのように正しく見えますか?
  2. エンティティを応答から除外するための正しいコードは何ですか?

私のサービスは次のようになります。

    @POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response postPojo(JAXBElement<ObjectPOJO> pojo);

編集:

エラー

 ERROR org.apache.cxf.jaxrs.client.AbstractClient - .Problem with reading the response message, class : class javax.ws.rs.core.Response, ContentType : application/xml.
4

1 に答える 1

0

REST クライアントと REST サービス間でオブジェクト (PoJo) を転送する場合、明示的な JAXB 変換を使用して転送する必要はありません。転送オブジェクトが JAXB アノテーション付きオブジェクトである場合、Jersey コンテナは必要な変換を担当します。

Response response = client.path(PATH).post(postObject);
@XmlRootElement
public class PostObject
{
////
}
于 2012-07-17T16:45:12.800 に答える