我正在尝试通过web.xml将Jersey2 ContainerRequestFilter添加到webapp。目前我总是使用带有servlet的符号来描述here:
||
现在在另一种情况下,我没有一个servlet,而是在tomcat上运行的wicket应用程序,我想使用我的过滤器。所以我尝试使用替代过滤器表示法,在上面的相同文章中描述(例4.10):
<servlet>
<servlet-name>MyApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
...
</init-param>
</servlet>
...
<servlet-mapping>
<servlet-name>MyApplication</servlet-name>
<url-pattern>/myApp/*</url-pattern>
</servlet-mapping>
我成功地将它与Jersey1过滤器表示法一起使用但是我无法使它与Jersey2过滤器一起使用(这个更新,所以我更喜欢它比旧版本更好)。
不幸的是,我发现此功能的文档相当差。任何人都可以帮助,如果这可能有效,如果有,如何做?
答案 0 :(得分:1)
正如@peeskillet在评论中提到的那样,我不得不在过滤器的顶部添加@Provider注释,以便它被Jersey选中。为试图找到解决方案的任何人添加此答案。对ContainerResponseFilter
也可以这样做。
import java.io.IOException;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerRequestFilter;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.ext.Provider;
@Provider
public class LoggingFilter implements ContainerRequestFilter,ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
//DO Stuff
}
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
//DO Stuff
}
}