2013-06-26 1 views
1

(I 저지 1.7을 사용하고 있습니다)ResourceFilterFactory 및 비 경로 주석 자원

나는 방법을 사용하여 주석 당 사용되는 필터를 선택 내 프로젝트에 ResourceFilterFactory을 추가하려고하고있다.

ResourceFilterFactory는 경로 주석으로 주석 처리 된 리소스를 필터링 할 수 있지만 호출 된 리소스의 SubResourceLocator 메서드에 대한 필터를 생성하지 않는 것으로 보입니다. (A #이 getB)

내가 예상

이 모든 방법에 대해 호출 될 AbstractResourceMethod (A #의의 doGet) AbstractSubResourceLocator :

@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() { } 
} 

경우는 필터 공장은 다음의 요구되며, 실행 하위 리소스

현재 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

클래스 B에 대해 클래스 경로에서 @Path 주석을 사용해야합니다. Jersey가 리소스 스캔을 수행 할 때이 클래스를 리소스로 사용하지 않을 것입니다.

+0

저는이 클래스 설정을 꽤 많이 실행하고 있으며 ResourceFilterFactory를 사용하여 문제가 발생했습니다. 예제와 내 코드의 유일한 차이점은 하위 클래스가 @Produces로 주석 처리된다는 것입니다. – tousdan

+0

이전에 일을했다는 사실은 저에게 매우 이상합니다. ResourceFilterFactory를 구현하기 전에 B 클래스에 정의 된 하위 리소스 "doOtherGet()"을 공격하기 위해 사용했던 URL은 무엇입니까? – Rosa

+0

은/a/b에서 GET됩니다. 이전에 말했듯이, 나는 여러 가지 개발 기계에서 그리고 1 년 동안 생산중인이 설치 프로그램을 실행 해왔다. – tousdan