0

我正在使用弹簧靴以及 JAX-RS 和泽西岛。我为不同的类型定义ExceptionMappers了不同的类型,Exceptions其中一种ExceptionMapper作为Fallback映射器,只是为了正确记录异常并将正确的响应发送回客户端。在单元测试级别上,一切正常,ExceptionMapper并且Exception使用

<groupId>org.glassfish.jersey.test-framework.providers</groupId>
<artifactId>jersey-test-framework-provider-inmemory</artifactId>

然而,在正在运行的应用程序(嵌入在 Je​​tty 中)上,只有捕获 的 Fallback 映射器java.lang.Exception被调用,而所有其他映射器都被忽略。我正在对所有内容使用注释扫描,并且FallbackExceptionMapperandMyCustomExceptionMapper都在同一个包中并用@Provider. 知道为什么其他异常映射器MyCustomExceptionMapper不起作用吗?

更新:我将异常的类型从我的更改java.lang.ExceptionFallbackExceptionMapperMyCustomException这也没有被调用。似乎除了根异常(java.lang)之外没有其他异常被映射器捕获。

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

4

0 回答 0