我创建了一个 RestEASY 拦截器,允许我在我的网络服务调用完成后设置 HTTP 响应的 header 值。我的代码看起来像这样......
@Provider
@ServerInterceptor
@Precedence("HEADER_DECORATORS")
public class MyHeaderInterceptor implements
MessageBodyWriterInterceptor {
@Override
public void write(MessageBodyWriterContext context) throws IOException,
WebApplicationException {
....do stuff here....
}
}
然而,当我调用我的服务时,拦截器从未被调用。我看到 web 服务调用成功完成,但我的拦截器中的代码都没有被执行。除此之外,我还需要做些什么来注册我的拦截器吗?是否必须在其他任何地方声明?是否需要包含任何特殊的 web.xml 参数?
最佳答案
您必须在 web.xml 的 resteasy.providers 上下文参数中列出拦截器。向拦截器类添加注解是不够的。
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>org.resteasy.test.ejb.exception.FooExceptionMapper</param-value>
</context-param>
关于java - RestEASY 拦截器未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5344311/