Джерси поддерживает ExceptionMappers как способ обработки дурных вещей, но это работает только в том случае, если вызов достиг моего кода. Если кто-то boffs URL-адрес, скажем, http://host/fubar
вместо http://host/foobar
, то он возвращает общий 404.Джерси: общий метод улавливания всех ошибок?
мне нужно ухватить эти boffed URL-адресов и перенаправление на страницу моего выбора, но после нескольких часов я не могу похоже, найдут правильную конфигурацию, чтобы это произошло. Я прохожу через отладчик, но я не нахожу места, где я бы перехватил какую-то конфигурацию, чтобы перенаправить такие 404 на страницу по своему выбору.
Редактировать: Обратите внимание, что пользовательский механизм исключения исключений для любого исключения WebApplicationException игнорируется Джерси (1.17.1). Вместо этого он обращается к другому методу обработки. Вот фрагмент кода из ContainerResponse.java Джерси:
if (cause instanceof WebApplicationException) {
mapWebApplicationException((WebApplicationException)cause);
} else if (!mapException(cause)) { ... }
Это mapWebApplicationException ((WebApplicationException) причина) собственная обработка Джерси, поэтому он никогда не попадает в метод mapException (причина) в ELSEIF который где пользовательские картостроители являются вызывается.
К сожалению, нет. Пользовательский сопоставитель не будет вызываться для любого исключения WebApplicationException. ContainerResponse.mapMappableContainerException, строка 398 (версия 1.17.1), сначала ищет этот случай и переадресовывает его собственный обработчик. Только если это какой-то другой тип исключения, он ищет сопоставленные исключения. –