2017-11-15 8 views
0

인터페이스에서 클래스 수준 @Path 주석을 해결하는 것과 같은 문제가 있습니다. 이 인터페이스를 Jersey 프록시 클라이언트의 WebResourceFactory에 전달하고 있지만 IllegalStateException이 발생하면 즉시 실패합니다.Jersey 프록시 클라이언트 용 리소스 인터페이스의 템플릿 변수 해결

인터페이스 정의 : "엔티티"템플릿 변수를 해결하는 방법에

Exception in thread "main" java.lang.IllegalStateException: The template variable 'entity' has no value 
    at org.glassfish.jersey.client.JerseyWebTarget.getUri(JerseyWebTarget.java:135) 
    at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:215) 
    at org.glassfish.jersey.client.JerseyWebTarget.request(JerseyWebTarget.java:60) 
    at org.glassfish.jersey.client.proxy.WebResourceFactory.invoke(WebResourceFactory.java:322) 

어떤 제안 :

@Path("{entity}") 
public interface EntityResource { 
    @GET 
    @Produces("*/xml") 
    Entity get(@PathParam("view") EntityType view); 
} 

내가 얻을 예외?

답변

0

jersey-proxy-client 소스 코드에서 조사를 한 후에 모든 템플릿 변수가 메소드 선언의 주석으로 해석된다는 것을 알게되었습니다. Apache CXF가 내 인터페이스를 생성하는 방법에 문제가있었습니다. @PathParam과 @Path가 일치하지 않습니다. @Path는 "엔터티"를 사용하고 @PathParam은 "보기"를 사용합니다. 템플릿 변수가 올바르게 해석 되려면 둘 다 동일해야합니다.