Martin Henderson wrote:
Tim Robertson <trobertson <at> gbif.org> writes:
Change short to int please throughout the code and try again.
Cheers
Tim
-----Original Message-----
From: news [mailto:news <at> sea.gmane.org] On Behalf Of Martin Henderson
Sent: Tuesday, May 09, 2006 12:59 PM
To: user <at> xfire.codehaus.org
Subject: [xfire-user] newbie: xfire fault invoking service with complex type
Hi,
I have a web service that takes an object as its argument, which is logon
information... then this attempts to log the user on with the supplied
credentials then then return a session id, wrapped in another object.
I've deployed this as
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<!-- Platform Manager service bean -->
<service>
<name>PlatformManager</name>
<namespace>platformanager</namespace>
<!-- Interface to expose -->
<serviceClass>
com.abc.services.PlatformManagerService
</serviceClass>
<!-- Implementation of exposed interface -->
<implementationClass>
com.abc.services.impl.PlatformManagerServiceImpl
</implementationClass>
</service>
</beans>
and let xfire take care of everything else...
however when I try to invoke from the client:
Service serviceModel =
new ObjectServiceFactory().create(PlatformManagerService.class);
// Create a proxy for the deployed service
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
String serviceUrl =
"http://localhost:8080/abc/services/PlatformManager";
PlatformManagerService client = null;
client = (PlatformManagerService) factory.create(serviceModel,
serviceUrl);
System.out.println("client created");
// Invoke the service
LogonInTO credentials = new LogonInTO();
credentials.setUserId("dave");
credentials.setLogonProtocol((short)1);
credentials.setUnConditional(true);
LogonOutTO out = client.logon(credentials);
I'm getting:
[junit] 10:14:49,612 ERROR om.abc.services.XFireTest: exception
e=Could not invoke service.. Nested exception is org.codehaus.xfire.fault.
XFireFault: Illegal argument invoking
'com.abc.services.PlatformManagerService.logon(com.abc.to.LogonInTO)':
object is
not an instance of declaring class
not quite sure whats going on here... do I need to generate full client side
stubs?
hope you can help.
thanks.
marty
some updates on this... myself and Tim (thanks again..) have been working this.
now we have a stack trace turned up logging on the server to debug:
14:36:02,480 DEBUG [DefaultEndpoint] Fault occurred!
org.codehaus.xfire.fault.XFireFault: Illegal argument invoking 'com.singularity.
spp.services.PlatformManagerService.logon(com.abc.to.ILogonInTO)': o
bject is not an instance of declaring class
at org.codehaus.xfire.service.binding.ObjectInvoker.invoke(ObjectInvoker
.java:93)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessa
ge(ServiceInvocationHandler.java:199)
at org.codehaus.xfire.service.binding.ServiceInvocationHandler.invoke(Se
rviceInvocationHandler.java:71)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.jav
a:98)
at org.codehaus.xfire.transport.DefaultEndpoint.onReceive(DefaultEndpoin
t.java:58)
at org.codehaus.xfire.transport.AbstractChannel.receive(AbstractChannel.
java:38)
at org.codehaus.xfire.transport.http.XFireServletController.invoke(XFire
ServletController.java:276)
at org.codehaus.xfire.transport.http.XFireServletController.doService(XF
ireServletController.java:145)
at org.codehaus.xfire.transport.http.XFireServlet.doPost(XFireServlet.ja
va:100)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
lter.java:81)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:178)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrinc
ipalValve.java:39)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
yAssociationValve.java:159)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
e.java:59)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo
int.java:527)
at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWor
kerThread.java:112)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalArgumentException: object is not an instance of decl
aring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.xfire.service.binding.ObjectInvoker.invoke(ObjectInvoker
.java:89)
... 29 more
14:36:02,751 DEBUG [HandlerPipeline] Invoking handler org.codehaus.xfire.soap.ha
ndler.FaultSoapSerializerHandler in phase post-invoke
14:36:02,751 DEBUG [HandlerPipeline] Invoking handler org.codehaus.xfire.handler
.CustomFaultHandler in phase user
14:36:02,751 DEBUG [HandlerPipeline] Invoking handler org.codehaus.xfire.transpo
rt.http.XFireServletController$FaultResponseCodeHandler in phase transport
14:36:02,751 DEBUG [HandlerPipeline] Invoking handler org.codehaus.xfire.fault.F
aultSender in phase send
anyone any thoughts tips or ideas?
thanks..
Going to take a stab at this - does PlatformManagerServiceImpl per
chance not actually extend PlatformManagerService?
- Dan
--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com
http://netzooid.com/blog