Hi ,
It looks like the error was thrown form the server side when the CXF
runtime invoke the service implementor.
Do you do some extra work on you server side?
Can you show me the server side configuration files?
Willem.
mule1 wrote:
Hello Dan,
I tried several things to debug to see what is going on.
First, I tried to test the sample spring helloworld client application as
standalone client that comes with the cxf download and it works with no
problem.
So, I copied the HelloWorld.java and HelloWorldImpl.java in my application,
did the application deploy in tomcat with the address called "/hello'
exposed for HelloWorld. Then, I ran the testcase using following:
ClientProxyFactoryBean cf = new ClientProxyFactoryBean();
cf.setAddress("http://localhost:8083/services/hello");
cf.setServiceClass(HelloWorldNew.class);
HelloWorld service = (HelloWorld) cf.create();
String test = "Hello World Test in Tomcat appserv";
String response = service.sayHi(test);
And I see following error on the server side:
Caused by: 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:585)
at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:107)
at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:77)
which is resulting in a CxfFault with message
"org.apache.cxf.interceptor.Fault: object is not an instance of declaring
class"
With debugging, I can see that when NativeMethodAccessorImpl.invoke0 is
called, the String message I pass "Hello World Test in Tomcat appserv" is
there. So, not really sure what makes it give IllegalArgumentException.
I am attaching some of the lines I copied from debug below:
-------------------
Daemon Thread [http-8080-Processor25] (Suspended)
IllegalArgumentException.<init>(String) line: 36
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not
available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 39
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 25
Method.invoke(Object, Object...) line: 585
BeanInvoker(AbstractInvoker).performInvocation(Exchange, Object, Method,
Object[]) line: 107
BeanInvoker(AbstractInvoker).invoke(Exchange, Object, Method, List)
line:
77
BeanInvoker(AbstractInvoker).invoke(Exchange, Object) line: 63
ServiceInvokerInterceptor$1.run() line: 56
SynchronousExecutor.execute(Runnable) line: 37
ServiceInvokerInterceptor.handleMessage(Message) line: 92
PhaseInterceptorChain.doIntercept(Message) line: 207
ChainInitiationObserver.onMessage(Message) line: 73
ServletDestination.doMessage(MessageImpl) line: 79
ServletController.invokeDestination(HttpServletRequest,
HttpServletResponse, ServletDestination) line: 235
ServletController.invoke(HttpServletRequest, HttpServletResponse) line:
140
CXFServlet(HttpServlet).service(HttpServletRequest, HttpServletResponse)
line: 710
CXFServlet(HttpServlet).service(ServletRequest, ServletResponse) line:
803
---- the values just before it fails with the IllegalArgumentException ----
this NativeMethodAccessorImpl (id=7268)
method Method (id=7242)
numInvocations 3
parent DelegatingMethodAccessorImpl (id=7264)
arg0 "helloService"
arg1 Object[1] (id=7245)
[0] "Hello World Test in Tomcat appserv"
-------The request message seen in the tcpmon is ---------
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns1:sayHi
xmlns:ns1="http://comp.com/"><arg0 xmlns="http://comp.com/">Hello World Test
in Tomcat appserv</arg0></ns1:sayHi></soap:Body></soap:Envelope>
and the response is:
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>object
is not an instance of declaring
class</faultstring></soap:Fault></soap:Body></soap:Envelope>