(我使用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>
我对过滤器厂的了解有缺陷吗?
答案 0 :(得分:-1)
你需要在类级别对类别B使用@Path注释。当泽西岛进行资源扫描时,我打赌你不会把这个类作为资源。