JAX-RS ExceptionMapper не работает ни для какого исключения, кроме java.lang.Exception
Я использую пружинный ботинок вместе с JAX-RS и Джерси. Я определил различные виды ExceptionMappers
для разных типов Exceptions
и один ExceptionMapper
как Fallback
mapper просто чтобы правильно зарегистрировать исключение и отправить правильный ответ клиентам. На уровне юнит-теста все работает нормально и правильное ExceptionMapper
называется для его соответствующего Exception
с использованием
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-inmemory</artifactId>
Однако в запущенном приложении (встроенном в Jetty) используется только средство резервного копирования, которое перехватывает java.lang.Exception
называется, а все остальные игнорируются. Я использую сканирование аннотаций для всего и FallbackExceptionMapper
а также MyCustomExceptionMapper
оба в одной упаковке и помечены @Provider
, Любая идея, почему другие сопоставители исключений, как MyCustomExceptionMapper
не работай?
Обновление: я изменил тип исключения из java.lang.Exception
в моем FallbackExceptionMapper
в MyCustomException
и это тоже не называется. Похоже, что нет другого исключения, кроме корневого исключения (java.lang
) пойман картографом.
Обновление 2: путем определения @Context javax.ws.rs.ext.Providers
провайдеры в моем FallbackExceptionMapper и метод providers.getExceptionMapper(MyCustomException.class)
Я вижу, что он возвращает экземпляр MyCustomExceptionMapper, но мне интересно, почему Джерси не вызывает его! Любая идея??