我用CXF设置了一个没有spring的Rest-Service,它工作正常,但是现在我想实现一个ContainerRequestFilter来进行身份验证。 问题是我的ContainerRequestFilter从未被调用。
我使用jaxrs-api 2.1的CXF 3.2.6
web.xml Servlet声明:
<servlet>
<servlet-name>RestApi</servlet-name>
<servlet-class>
org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet
</servlet-class>
<init-param>
<param-name>jaxrs.serviceClasses</param-name>
<param-value>
webservice.core.rest.facade.RestWsFacadeImpl
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>RestApi</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
我的服务班
@Path("/")
public class RestWsFacadeImpl {
@GET
@Path("/debug")
@Secured
public String debug() {
return "test";
}
}
我的命名注释类:
@Target({TYPE, METHOD})
@Retention(RUNTIME)
@NameBinding
public @interface Secured {}
我的过滤器类
@Secured
@PreMatching
@Provider
public class AuthenticationFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
//...
}
}