如果在控制器的某个地方抛出了异常,ContainerResponseFilter是否会被执行?

问题描述 投票:6回答:1

我有一个基于RestEasy的服务,我在ContainerResponseFilter中做一些清理工作。问题是,如果一个资源抛出了未知的运行时异常(即我没有映射器的异常),ContainerResponseFilter永远不会被执行。这是预期的行为吗?有什么变通的办法吗?我在看下面的问题(由Jonas回答)。 我应该如何在我的RESTful JAX-RS Web服务中记录未捕获的异常? 这使得ContainerResponseFilter似乎在控制器中抛出异常时也会被执行?我是不是遗漏了什么?

jax-rs resteasy
1个回答
0
投票

对我来说也没有用。这声称它应该工作。https:/github.comGraylog2graylog2-serverissues1826

我不想再深究了,干脆用一个普通的javax.servlet.Filter,当然那里很难设置reponses-headers(在chain.doFilter()之后, ... .rr..

所以用了一个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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.