Я использую 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);
поможет, но, похоже, это не так.