2011-07-18 3 views
1

예제 다음은 here입니다. Grizzly 컨테이너를 사용하여 샘플 리소스를 배포하는 경우. 그것은 클래스로 정의 된 리소스를 사용하는 대신, 주석이있는 인터페이스를 정의하고 리소스 클래스에서 해당 인터페이스를 구현하도록하고 싶습니다.JAX-RS Jersey/Grizzly 인터페이스 리소스를 정의하십시오.

문제 이제 그리 즐이는 자원 찾을 수 없다는 불평이다 : Main 클래스에

com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not  contain any root resource classes. 

, "com.mycompany.pack"는 구현 클래스가 포함 된 패키지입니다 :

final String baseUri = "http://localhost:9999/"; 
final Map<String, String> initParams = new HashMap<String, String>(); 
initParams.put("com.sun.jersey.config.property.packages", "com.mycompany.pack"); 

[편집] : 그러나 클래스에 주석을 추가 할 때도 작동합니다. 주석이 인터페이스 수준에서만 선언되도록하는 방법이있는 경우.

답변

1

JAX-RS 주석이있는 클래스 만 검색하므로 패키지 스캔으로는이 작업을 수행 할 수 없습니다. 다른 접근법을 사용해야합니다 : Jersey 사용자 안내서에 언급 된 configuration options 중 하나 (리소스 클래스를 명시 적으로 선언 할 수 있음) 또는 jersey-spring을 사용하여 인스턴스를 관리 할 수도 있습니다. 저지 스프링을 사용하면 원하는대로 인터페이스를 사용할 수있는 추가 단계가 없습니다. 인터페이스에 주석을 달고, 구현을 Spring 빈으로 만든다.

+0

저지 2로 변경 되었습니까? – Jayen

+0

저지 2에 대해 많이 알지 못합니다. 아직 궁금한 점이 있으면 새로운 질문을하는 것이 좋습니다. –