我正在使用RestEasy来构建我的Restful Web服务。我已经实现了ExceptionMappers来准备特定的异常响应。
我还实现了MessageBodyWriterInterceptors和一些PostProcessorInterceptors。
问题:当任何资源没有抛出任何异常时,一切正常。我的实现按预期工作。所有后处理器拦截器和消息体编写器拦截器都被调用。
但是当从任何资源方法抛出异常时,会调用已注册的ExceptionMappers并创建响应。但在这种情况下,不会遍历后处理器拦截器链。他们没有被召唤。
在这种情况下我该怎么做。在我的异常映射器中写入该拦截器逻辑,或者是否有可用的解决方案?
答案 0 :(得分:11)
如果抛出异常,则不会调用后处理器。它们位于不同的并行解析路径上:
/ 'Normal' JAX-RS response -> Post Processors -> Message Body Writers Processing \ Exception -> Exception Mappers
如果您的逻辑需要在后处理器和异常映射器中运行,那么您需要将它合并到两者中(最好通过公共实用程序类)。