2017-11-15 9 views
0

Ich habe ein Problem bei der Auflösung einer @Path-Annotation auf Klassenebene an einer Schnittstelle. Ich übergebe diese Schnittstelle an eine WebResourceFactory in Jersey Proxy-Client, aber es schlägt sofort mit einer IllegalStateException fehl.Auflösung der Vorlagenvariable in der Ressourcenschnittstelle für Jersey Proxy-Client

Die Schnittstellendefinition:

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

Die Ausnahme, die ich erhalten:

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) 

Vorschläge, wie die "Einheit" Template-Variable zu lösen?

Antwort

0

Nach einigen Nachforschungen im Trikot-Proxy-Client-Quellcode habe ich festgestellt, dass alle Template-Variablen mit Anmerkungen zur Methodendeklaration aufgelöst werden. Es gab ein Problem, wie Apache CXF meine Schnittstellen generiert hat. Ich habe einen Konflikt zwischen @PathParam und @Path. @Path verwendet "entity" und mein @PathParam verwendet "view". Sie müssen beide identisch sein, damit die Template-Variable korrekt aufgelöst werden kann.

Verwandte Themen