1

(我使用的是泽西岛 1.7)

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

ResourceFilterFactory 似乎能够过滤使用 Path 注释注释的资源,但它似乎不会尝试为调用的资源的 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() { }
}

运行时,过滤器工厂只会被以下调用: 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>

我对滤清器厂的理解有问题吗?

4

1 回答 1

-1

您需要在 B 类的类级别使用 @Path 注释。当 Jersey 进行资源扫描时,我敢打赌它不会将此类作为资源。

于 2013-06-26T16:45:41.353 回答