最好的方法是使用 ExceptionMapper。您创建一个实现 ExceptionMapper 的类 UnmarshalExceptionMapper。您使用“@Provider”对此进行注释,并在应用程序构造函数中执行“classes.add(UnmarshalExceptionMapper.class)”或“singletons.add(new UnmarshalExceptionMapper())”。
您的异常映射器将如下所示:
@provider
public class UnmarshalExceptionMapper
implements ExceptionMapper<UnmarshalException> {
public Response toResponse(UnmarshalException exception) {
ResponseBuilder rb =
Response.status(
Response.Status.BAD_REQUEST) // Most appropriate HTTP status code
.entity(your xml goes here)
.type("application/xml");
return rb.build();
}
}
请注意,您必须将类型设置为“application/xml”,因为当前没有为异常映射器完成内容协商。要进行自己的内容协商,请从请求中获取 HttpHeaders,找到“接受”标头,并相应地设置类型。