В нашей (наследственной) кодовой базе мы бросаем WebApplicationExceptions по-разному. В попытке сделать некоторый порядок в том, как мы обрабатываем исключения - я хотел создать ExceptionMapper для этих WAE (и других).
Я понял, однако, что Jersey ExceptionMapper отображает только WAE, которые не были выбраны сущностью.
Например:
throw new WebApplicationException(Response.status(500).build());
Это исключение попадает в ExceptionMapper.
throw new WebApplicationException(Response.status(500).entity(WsResourceUtils.createWSResourceRestError(500, "bla")).build());
Это исключение НЕ попадает в ExceptionMapper.
Оба выбрасываются из одной и той же точки в коде.
Это мой ExceptionMapper:
@Provider
public class GeneralExceptionMapper implements ExceptionMapper<Throwable> {
private static final Logger logger = LoggerFactory.getLogger(GeneralExceptionMapper.class);
@Override
public Response toResponse(Throwable e) {
logger.error("Caught a WAE", e);
...
}
Возможно ли создать ExceptionMapper, который будет захватывать WebApplicationExceptions, даже если их ответ уже построен с сущностью?
Мы используем Джерси 1.17.
Спасибо.