如何从Apache CXF中的ContainerRequestFilter获取目标资源

时间:2013-10-22 18:05:54

标签: java spring rest cxf jax-rs

我正在使用Apache CXF创建RESTful Web服务。 我想对使用@Authenticate注释的资源的请求进行身份验证。为此,我打算编写一个匹配ContainerRequestFilter的帖子并验证请求,如果身份验证失败,则执行ContainerRequestContext.abortWith(javax.ws.rs.core.Response)。但是,我只想对使用@Authenticate注释的资源进行身份验证。

问题是我无法找到如何访问匹配的资源。我知道我可以使用CXF拦截器来实现它,但我想坚持使用JAX-RS 2.0提供的功能。 我在另一篇文章中看到你可以在Rest-easy

中使用下面的内容
ResourceMethodInvoker methodInvoker = (ResourceMethodInvoker) 
            requestContext.getProperty("org.jboss.resteasy.core.ResourceMethodInvoker");
Method method = methodInvoker.getMethod();

在CXF中可以采用类似的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

只需在过滤器类中添加以下内容作为实例变量:

  

@Context

     

ResourceInfo信息;

     

“javax.ws.rs.container.ResourceInfo是一个新的JAX-RS上下文,它可以   注入过滤器和拦截器并检查哪个资源   即将调用类和方法。

(来源:https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Basics#JAX-RSBasics-ResourceInfo