删除向导异常映射



我创建了两个 ExceptionMappers:

GenericExceptionMapper implements ExceptionMapper<Throwable>

ValidationExceptionMapper implements ExceptionMapper<javax.validation.ValidationException>

GenericExceptionMapper 检查异常是否属于特定类型,如果是,将完成一些映射。在所有其他情况下,它将被映射到 500。

ValdiationExceptionMapper 将映射到具有特定响应的 400。

现在我正在观察一些奇怪的事情。如果我省略了 ValidationExceptionMapper,则不会调用 GenericExceptionMapper。此外,如果我切断数据库连接,将触发非异常映射器。在这两种情况下,响应都是 500 html 格式。我真正想要的是映射器应该捕获每个异常。

我正在使用带有设置registerDefaultExceptionMappers: false的滴阀向导 1.0.5 .

首先,我不认为设置@Singleton是资源的一个好主意。

另一方面:这是通过实现 ExtendedExceptionMapper 来自定义为特定异常给出的响应的正确方法:

environment.jersey().register(new ExtendedExceptionMapper<WebApplicationException>() {
@Override
public Response toResponse(WebApplicationException exception) {
    return Response.status(Response.Status.NOT_FOUND).build();
}
@Override
public boolean isMappable(WebApplicationException e) {
    return Throwables.getRootCause(e).getClass() == MustacheNotFoundException.class;
}});

删除向导文档,模板错误部分

最新更新