ResourceFilterFactory и ресурсы без комментариев
(Я использую Джерси 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>
Мое понимание фабрики фильтров неверно?
1 ответ
Вам нужно использовать аннотацию @Path на уровне класса для класса B. Когда Джерси выполняет сканирование ресурсов, я уверен, что он не выберет этот класс в качестве ресурса.