Dropwizard为javax.validation.ConstraintViolationException定制ExceptionMapper

时间:2018-06-08 05:24:06

标签: java exception dropwizard

我正在使用Dropwizard,并希望创建一个自定义的ExceptionMapper来处理javax.validation.ConstraintViolationException。我创建了一个客户映射器:

@Provider
public class MyExceptionMapper implements ExceptionMapper<Exception> {
    public Response toResponse(Exception exception) {
        return Response.status(500)
                .entity(exception.getMessage())
                .type(MediaType.TEXT_PLAIN)
                .build();
    }
}

并在我的Dropwizard应用中配置它:

@Override
public void run(HelloWorldConfiguration configuration, Environment environment) {
    ServerFactory serverFactory = configuration.getServerFactory();
    if (serverFactory instanceof AbstractServerFactory) {
        ((AbstractServerFactory) serverFactory).setRegisterDefaultExceptionMappers(false);
    }

    environment.jersey().register(new MyExceptionMapper());
}

当资源/控制器抛出javax.validation.ConstraintViolationException异常时,我的自定义映射器无法处理它,而是通过org.glassfish.jersey.server.validation.internal.ValidationExceptionMapper返回400,这不是我想要的。

是否可以覆盖/删除泽西岛的映射器?我本以为设置setRegisterDefaultExceptionMappers(false);就可以了,但似乎没有。

0 个答案:

没有答案