ResourceFilterFactory和非Path注释资源

时间:2013-06-26 16:20:03

标签: jersey jax-rs jersey-1.0

(我使用Jersey 1.7)

我正在尝试在项目中添加ResourceFilterFactory,以便使用注释选择每个方法使用哪些过滤器。

ResourceFilterFactory似乎能够对使用Path注释注释的Resources进行过滤,但似乎它不会尝试为被调用资源的SubResourceLocator方法生成过滤器。

@Path("a")    
public class A {

 //sub resource locator?
 @Path("b")
 public B getB() { 
   return new B();
 }

 @GET
 public void doGet() {}
}

public class B {
 @GET
 public void doOtherGet() { }

 @Path("c")
 public void doInner() { }
}

运行时,只会调用Filter工厂进行以下操作: AbstractResourceMethod(A#的doGet) AbstractSubResourceLocator(A#getB)

当我期望为子资源的每个方法调用它时。

我目前在我的web.xml中使用以下选项;

<init-param>
    <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
    <param-value>com.my.MyResourceFilterFactory</param-value>
</init-param>

<init-param>
     <param-name>com.sun.jersey.config.property.packages</param-name>
     <param-value>com.my.resources</param-value>
</init-param>

我对过滤器厂的了解有缺陷吗?

1 个答案:

答案 0 :(得分:-1)

你需要在类级别对类别B使用@Path注释。当泽西岛进行资源扫描时,我打赌你不会把这个类作为资源。