我打算编写一个servlet应用程序(用于部署OSGI)并使用一些过滤器进行HTTP头预处理。虽然最初确定了javax.servlet过滤器实现,但我发现我实际上不知道为什么/何时会选择使用它与Jersey ContainerRequestFilter。虽然后者带有一些预先构建的过滤器,但前者可能也是如此(例如Cors过滤器)。因此,在选择使用哪种API时应该考虑什么?是否存在不应该使用另一个人的特定情况?
无论你决定什么,你将使用基于javax.servlet的Filter实现,因为它是你在Java EE中使用的每个Filter
的基本接口。
http://docs.oracle.com/javaee/6/api/javax/servlet/Filter.html
现在,Jersey提供了一个实现,增加了一些功能(访问你的ContainerRequestContext
或你在Jersey应用程序中需要的任何东西)。您是否已在应用程序中使用Jersey?然后去吧,如果不是我不打扰(至少是先验的,没有进一步的信息),只需要最简单的javax.servlet.Filter
实现并直接进入我的web.xml
JAX-RS过滤器的问题在于您无法控制执行过滤器链
chain.doFilter(request, response);
因为我现在的问题是将Servlet过滤器转移到JAX-RS过滤器,但是当前的Servlet过滤器调用整个过滤器链以便最终检查响应及其状态。从我的角度来看,使用JAX-RS过滤器是不可能的。