【发布时间】:2010-08-03 20:27:19
【问题描述】:
我想检查一个 JAX-RS Web 服务请求是否包含在正文中的有效 XML。但是,这段代码:
@PUT
@Produces(MediaType.TEXT_XML)
@Consumes(MediaType.TEXT_XML)
@Path("/{objectID}")
public MyObject updateMyObject(@PathParam("objectID") String existingObjectID, JAXBElement<MyObject> object)
{
MyObject udpatedObject = null;
try
{
udpatedObject = object.getValue();
}
catch (Throwable ex)
{
throw new WebApplicationException(Response.Status.BAD_REQUEST);
}
// carry one with processing
}
返回 500 内部服务器错误,而不是预期的 400 错误。有没有办法捕获异常?
异常堆栈跟踪的开始是:
Local Exception Stack:
Exception [EclipseLink-25004] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: An error occurred unmarshalling the document
Internal Exception: org.xml.sax.SAXParseException: Premature end of file.
at org.eclipse.persistence.exceptions.XMLMarshalException.unmarshalException(XMLMarshalException.java:92)
【问题讨论】:
标签: java jaxb jax-rs saxparseexception