java - RestEASY 拦截器未被调用

标签 java web-services rest http-headers resteasy

我创建了一个 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/

相关文章:

java - 需要正则表达式帮助,因使用反斜杠而受到打击

c# - 有什么快速熟悉 C#、.NET 框架等的方法?

php - 将某些命名空间添加到 PHP 中的 SOAP 信封

java - Apache CXF 文档功能

javascript - Ember.js RESTful 模型关系

python - Django REST 框架——如何将外键解析为实际值,而不是索引?

java - 在 map 中找不到 macosx-x86-64 的 maven mac os Lib 文件

java - 针对特定时间线迭代 For 循环

Java 1.5 Calendar#compareTo() 混淆

javascript - 从 .catch(error) 返回未在 Node/Express 中返回