JAX-RS ExceptionMapper不适用于除java.lang.Exception之外的任何异常

时间:2015-11-22 23:06:45

标签: java spring-boot jax-rs exceptionmapper

我正在使用春季靴子以及JAX-RS和Jersey。 我已为不同类型的ExceptionMappers和一个Exceptions定义了不同类型的ExceptionMapper作为Fallback映射器,只是为了正确记录异常并向客户端发回正确的响应。在单元测试级别上,一切正常,并使用

为相应的ExceptionMapper调用正确的Exception
<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-inmemory</artifactId>

但是在正在运行的应用程序(嵌入Jetty)中,只会调用捕获java.lang.Exception的Fallback映射器,而忽略所有其他映射器。我正在对所有内容使用注释扫描,FallbackExceptionMapperMyCustomExceptionMapper都在同一个包中,并使用@Provider进行注释。知道为什么像MyCustomExceptionMapper这样的其他异常映射器不起作用吗?

更新:我将java.lang.Exception中的FallbackExceptionMapper的异常类型更改为MyCustomException,但也未调用此类型。看起来除了根异常(java.lang)之外没有其他异常被映射器捕获。

Update2:通过在我的FallbackExceptionMapper和方法@Context javax.ws.rs.ext.Providers中定义providers.getExceptionMapper(MyCustomException.class)提供程序,我确实看到它返回了MyCustomExceptionMapper的实例,但我想知道为什么Jersey会这样做不叫它!有什么想法??

0 个答案:

没有答案