PS -
I believe I could do it by casting my java.xml.rpc.Service to an
org.apache.axis.client.Service and then call setTypeMappingRegistry(..) on
it - is that the preferred method?
I'm going to go give it a shot.
-c
On Fri, Oct 17, 2003 at 04:32:59PM -0400, Christopher Blunck wrote:
> I've been looking high and low for documentation on how to instruct a JAXRPC
> client (backed by Axis) where to look for your complex types. So here's a
> challenge - prove me an idiot by calling out where these docs exist, or
> similarly mock my intelligence by provided a code snippet to explain how this
> works.
>
> Here's the setup.
>
> I have a service that is passed a complex type, and returns a complex type.
> It's interface (as generated by Axis) looks like this (OrderPortType.java):
> public submit.Response submit(submit.Request request)
> throws RemoteException;
>
> I used Axis to generate a server skeleton, which I then subclass and deploy
> with axis under Tomcat. Everything looks good thus far.
>
> I then code up my client. I'd really like to code it using a ServiceFactory:
> URL url = new URL(urlString);
> ServiceFactory factory = ServiceFactory.newInstance();
> Service service = factory.createService(url, new QName(ns, serviceName));
>
> List list =
> service.getHandlerRegistry().getHandlerChain(new QName(ns, portName));
> list.add(new HandlerInfo(ClientHandler.class, null, null));
>
> OrderPortType myProxy =
> (OrderPortType) service.getPort(new QName(ns, portName),
> OrderPortType.class);
>
> Object response = myProxy.submit(null);
>
>
> I compile the client and run it. I receive the classic "unable to find
> deserializer for type {....}/...".
>
> I gave it some thought, and I don't see how I can provide this information.
> The OrderPortType.class parameter I pass to service.getPort() is just an
> interface - it doesn't contain any complex type information. Since that's the
> only class I ever pass to the JAX-RPC framework, I don't see how I can possibly
> tell JAX-RPC how to correctly deserialize the response soap message.
>
> What am I missing? My deploy.wsdd contains typeMapping information, and I've
> sniffed the network to confirm that the response soap message looks kosher.
>
> Is there a method I can call to register my type mappings? Or .... ?
>
> This seems so simple, yet is so out of reach.
>
> BTW, example5 of the userguide only shows how to serialize a complex type.
> I'll get to that later - I want to know how to deserialize first.
>
> Any hints?
>
>
> -c
>
> --
> 16:25:00 up 2 days, 5:30, 8 users, load average: 0.16, 0.12, 0.04
--
16:35:00 up 2 days, 5:40, 8 users, load average: 0.09, 0.13, 0.08