【问题标题】:Jersey Response Filter泽西响应过滤器
【发布时间】:2014-02-10 15:59:05
【问题描述】:

我正在尝试创建一个球衣过滤器来过滤服务器对 500 错误的所有响应。

但我对过滤器了解不多,所以我刚刚开始编写一些代码,但我不知道如何继续...谁能帮我解决这个问题。

@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
}

我的 web.xml 看起来像这样

<servlet>
<servlet-name>Authenticator</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
    <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
    <param-value>com.query.displayer.Filters</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Authenticator</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

【问题讨论】:

    标签: java filter jersey servlet-filters jersey-2.0


    【解决方案1】:

    您在应用程序中混合了 Jersey 的 2 个版本:实现来自 JAX-RS 2.0 (Jersey 2) 的 ContainerRequestFilter 和 Jersey 1 的描述符配置 (web.xml)(参见前缀 com.sun.jersey)。以下文章解释了如何在 Jersey 2 中注册提供程序:

    看来你我们在 Jersey 1 中使用ResourceFilterFactory。这个概念在 Jersey 2 中不存在,但有一个新概念(直接在 JAX-RS 2.0 中)如何做到这一点:

    【讨论】:

    • 谢谢你...帮助很大。
    【解决方案2】:

    当您使用 Jersey-2 时,您必须使用以下配置将您的过滤器注册到 web.xml 中

    jersey.config.server.provider.classnames

    而不是

    com.sun.jersey.spi.container.ContainerRequestFilters (jersey-1x)

     <!-- This is the config needed -->
    <servlet>    
          //...         
         <init-param>
             <param-name>jersey.config.server.provider.classnames</param-name>
             <param-value>com.your_package_path.yourClassFilter</param-value>
         </init-param>
          //...
    </servlet>
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 2021-05-16
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 2018-10-18
      • 2011-04-28
      相关资源
      最近更新 更多