users@jersey.java.net

wrong method invocation?

From: Ryan Heaton <ryan_at_webcohesion.com>
Date: Tue, 12 Aug 2008 14:57:14 -0600

Hello.

I'm experimenting with the ComponentProvider interface and attempting
to return a dynamic proxy as the instance from those "getInstance"
methods. The root resource class implements a method on an interface
that is annotated with @GET. The dynamic proxy is applied to this
interface and eventually delegates its logic to the implementation
method.

However, it appears that Jersey is invoking the *implementation*
method, not the interface method, which actually defines the REST
interface (since that's where the annotations reside). Is this by
design?

java.lang.IllegalArgumentException: object is not an instance of declaring class
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.sun.jersey.impl.model.method.dispatch.EntityParamDispatchProvider$TypeOutInvoker._dispatch(EntityParamDispatchProvider.java:136)
        at com.sun.jersey.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:81)
        at com.sun.jersey.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:133)
        at com.sun.jersey.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
        at com.sun.jersey.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71)
        at com.sun.jersey.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
        at com.sun.jersey.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:64)
        at com.sun.jersey.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:720)
        at com.sun.jersey.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:690)

Thanks,

-Ryan