java - 当 ExceptionMapper 创建响应时,未遍历 RestEasy 后处理拦截器链

标签 java jakarta-ee resteasy

我正在使用 RestEasy 构建我的 Restful Web 服务。我已经实现了 ExceptionMappers 来准备特定的异常响应。

我还实现了 MessageBodyWriterInterceptors 和几个 PostProcessorInterceptors。

问题:当任何资源不抛出任何异常时,一切正常。我的实现按预期工作。调用所有后处理器拦截器和消息正文编写器拦截器。

但是,当任何资源方法抛出异常时,将调用已注册的 ExceptionMappers 并创建响应。但在这种情况下,不会遍历后处理器拦截器链。他们没有接到电话。

遇到这种情况我该怎么办。在我的异常映射器中编写该拦截器逻辑或者是否有可用的解决方案?

最佳答案

如果抛出异常,则不会调用后处理器。它们位于不同的并行解析路径上:

           / 'Normal' JAX-RS response -> Post Processors -> Message Body Writers
Processing
           \  Exception -> Exception Mappers

如果您有需要在后处理器和异常映射器中运行的逻辑,那么您需要将其合并到两者中(最好通过通用的实用程序类)。

关于java - 当 ExceptionMapper 创建响应时,未遍历 RestEasy 后处理拦截器链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13937998/

相关文章:

java - Spring JdbcTemplate : Getting Lists Not Mapped to an Object

java - JxBrowser 占用大量内存

java - 方法委托(delegate)和添加字段

java - 使用 JSON-B/Yasson 将 JSON 反序列化为多态 POJO

java - 无法执行 : javax. ws.rs.NotSupportedException:找不到类型的消息正文阅读器:T 内容类型:application/xml

c# - 如何获取图像中某些文本的坐标?

java - 如何在 Apache Camel 中创建多个和发送多个交换

java - Servlet PrintWriter 输出流真的需要关闭吗?

java - 如何在EJB 3.1中缓存EJB远程接口(interface)?

java - RestEasy - ClientResponse.ReleaseConnection()