Jersey UnmarshalException JAXB,带有多个getEntity的XML()

时间:2012-06-25 17:13:07

标签: java jersey marshalling

我有这个例外。

我的对象看起来像这样:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ObjectDTO implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -8545841080597549468L;

@XmlElement(name="objectId")
private String objectId;
@XmlElement(name="owner")
private String owner;
@XmlElement(name="objectName")
private String objectName;

Constructor, getter/setter, toString, Hash...

现在我用:

调用我的服务方法
 ClientResponse postRes = service.path("rest").path("object").accept(MediaType.APPLICATION_XML).post(ClientResponse.class, object);

当我这样做时

 System.out.println(postRes.getEntity(ObjectDTO.class));

它工作正常。但是,当我尝试对我的对象执行get操作时:

 String string = postRes.getEntity(ObjectDTO.class).getObjectId();

我得到了例外。

 javax.ws.rs.WebApplicationException: javax.xml.bind.UnmarshalException - with linked exception: [org.xml.sax.SAXParseException: Premature end of life.]  

怎么了?

1 个答案:

答案 0 :(得分:3)

看起来您正在尝试两次读取实体(第二次实体流已被消耗)。而不是两次调用postRes.getEntity(),只调用一次,将结果存储在变量中,然后对该变量进行操作。