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

Reply via email to