我有一个基于RestEasy的服务,其中正在ContainerResponseFilter中进行一些清理工作。问题是,如果资源抛出了未知的运行时异常(即我没有映射器的异常),则ContainerResponseFilter永远不会执行。
这是预期的行为吗?有没有解决方法?我在看以下问题(乔纳斯的回答):
如何在RESTful JAX-RS Web服务中记录未捕获的异常?
并且即使在控制器中引发异常时,看起来好像也会执行ContainerResponseFilter吗?
我想念什么吗?
也不适合我。这声称它应该有效:https://github.com/Graylog2/graylog2-server/issues/1826
我不想进一步调查,只是使用普通的旧 javax.servlet.Filter,但是当然很难设置响应头(在 chain.doFilter() 之后,... grr ..
所以使用了Spring的解决方案:
public static class MyFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
response.setHeader("MyHeader", "MyValue");
filterChain.doFilter(request, response);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |