如何从客户端读取Wildfly resteasy反序列化错误?

时间:2014-11-21 16:21:43

标签: jboss jax-rs resteasy wildfly java-ee-7

My Wildfly resteasy服务工作正常,或直到我更改了代码。没什么大不了的,现在我收到了反序列化错误:"Problem deserializing 'setterless' property ..."

我的问题是,无论如何都要在客户端中收到错误消息。我的状态为400,我可以测试一下,但如果可能,我想收到任何消息。有什么想法吗?

如果我在用户代码中出现错误,我可以在标题中设置错误消息,但由于存在反序列化问题,服务器在获取任何用户代码之前会抛出错误。

1 个答案:

答案 0 :(得分:0)

您可以使用ExceptionMapper来处理返回给客户端的响应。 JAX-RS有一个异常层次结构,可以映射到不同的响应和状态代码。 JAX-RS中的400是BadRequestException。所以你可以做类似

的事情
@Provider
public class BadRequestExceptionMapper
                      implements ExceptionMapper<BadRequestException> {
    @Override
    public Response toResponse(BadRequestException e) {
        Response response = Response.status(Response.Status.BAD_REQUEST)
                .entity("Sorry I forgot to implement a Setter").build();
        return response;
    }  
}

这不是一个非常好的例子,因为BadRequestException由于许多其他原因而被抛出,而不仅仅是忘记了一个setter(或反序列化),但它演示了如何在抛出异常后拦截响应。