2012-07-17 46 views
0

我想用我的CXF Rest Client傳輸POJO對象。它已經適用於JAXB註釋對象。所以我爲此嘗試了很多。CXF Rest Client - 爲POJO設置ResponseReader(JAXBElement)

我試圖

reader.setEntityClass(ObjectPOJO.class); 

和類似

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

兩個不工作。對於第二次嘗試,代碼是錯誤的。我決定讓它將實體類設置爲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. 什麼是正確的代碼讓實體退出響應?

我的服務是這樣的:

@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. 

回答

0

要轉移其他客戶之間的對象(PO​​JO)和REST服務,也沒有必要使用顯式的JAXB轉換來傳輸它。如果傳輸對象是JAXB註釋對象,則Jersey容器負責進行必要的轉換。

Response response = client.path(PATH).post(postObject); 
@XmlRootElement 
public class PostObject 
{ 
//// 
} 
+0

對您有幫助嗎? – vvekselva 2012-07-17 16:45:51

+0

我不使用澤西島,它是Apache CXF。我想轉移Pojo,而不是Jaxb註釋對象。 – 2012-07-17 16:59:57