2012-07-17 33 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