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