我正在尝试创建一个球衣过滤器,用于过滤所有服务器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>
答案 0 :(得分:4)
您在应用程序中混合了两个版本的Jersey:从JAX-RS 2.0(Jersey 2)实现ContainerRequestFilter和为Jersey 1实现描述符配置(web.xml)(请参阅前缀{{1} })。以下文章解释了如何在Jersey 2中注册提供程序:
看来你我们在Jersey 1中使用com.sun.jersey
。这个概念在Jersey 2中不存在,但是有一个新概念(直接在JAX-RS 2.0中)如何做到这一点:
答案 1 :(得分:0)
使用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>