pin*_*her 0 java jax-rs interceptor resteasy jakarta-ee
我正在编写 jax-rs 端点。对于某些端点集(现有代码),我想设置一个额外的响应标头,它实际上是在 @AroundInvoke 拦截器中生成的,并设置为 HttpServletRequest 属性。在@AroundInvoke 中,我可以使用@Inject 访问HttpServletRequest。但似乎我无法在同一个拦截器本身中访问 HttpServletResponse 。
似乎我可以使用 PostProcessorInterceptor 但我再次对以下文档感到困惑。
org.jboss.resteasy.spi.interception.PostProcessInterceptor 在 JAX-RS 方法被调用之后但在 MessageBodyWriters 被调用之前运行。它们只能在服务器端使用。如果您需要在可能没有调用任何 MessageBodyWriter 时设置响应标头,请使用它们。
我正在使用resteasy,杰克逊。如果我使用 PostProcessorInterceptor 可以注入 HttpServletResponse 吗?或者我可以在那里设置新的 http 标头吗?
任何代码示例/方向将不胜感激。
随着JAXRS 2(附带的JavaEE 7)你可以使用一个ContainerResponseFilter 也看
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);
}
}
Run Code Online (Sandbox Code Playgroud)