2

この例外があります。

私のオブジェクトは次のようになります。

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

どうしたの?

4

1 に答える 1

3

エンティティを 2 回読み取ろうとしているようです (エンティティ ストリームが既に消費されている 2 回目)。postRes.getEntity() を 2 回呼び出す代わりに、1 回だけ呼び出し、結果を変数に格納してから、その変数を操作します。

于 2012-06-25T18:14:51.413 に答える