使用拦截器设置响应 header?

Setting response header using interceptor?

我正在写 jax-rs 个终点。对于某些端点集(现有代码),我想设置一个额外的响应 header,它实际上是在 @AroundInvoke 拦截器中生成的,并设置为 HttpServletRequest 属性。在@AroundInvoke 中,我可以使用@Inject 访问HttpServletRequest。但似乎我无法在同一拦截器本身中访问 HttpServletResponse。

看来我可以使用 PostProcessorInterceptor,但我又对以下文档感到困惑。

The org.jboss.resteasy.spi.interception.PostProcessInterceptor runs after the JAX-RS method was invoked but before MessageBodyWriters are invoked. They can only be used on the server side. Use them if you need to set a response header when there might not be any MessageBodyWriter invoked.

杰克逊,我正在使用 resteasy。如果我使用 PostProcessorInterceptor,我可以注入 HttpServletResponse 吗?或者我可以设置新的 http header 吗?

任何代码 example/direction 将不胜感激。

使用 JaxRS 2(javaEE 7 附带),您可以使用 ContainerResponseFilter see also

public class PoweredByResponseFilter implements ContainerResponseFilter {

    @Inject
    HttpServletRequest request;

    @Override
    public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
        throws IOException {
            String name = "X-My-Header";
            String value = "";// some data from request
            responseContext.getHeaders().add(name, value);
    }
}