You are almost 100% correct.
You can define GLOBAL type mappings in the server-config.wsdd file, which the JWS 
service(s) can use.

The roundabout way of doing this is to feed DogService.jws?WSDL in to the WSDL2Java 
--skeleton command, and extract the relevant <typeMapping> tags from the deploy.wsdd.  
You can then use the Admin client to deploy them to a running server, or just 
cut/paste them in to the server-config.wsdd yourself.  Make sure they are outside of 
any <service> elements.

There are several ways we can fix this problem in the future.  

The first way is to extend the org.apache.axis.AxisServiceConfig interface, and add a 
function that would allow the JWS class to set up its own type mappings.  This 
interface is designed to allow a service to convey metadata about itself to the Axis 
engine.

The second (much cooler) way is to use XDoclets to extract type mappings from the 
source code comments.  

Expect the first before the second. :-)

--
Tom Jordahl
Macromedia



-----Original Message-----
From: CM [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, April 17, 2002 4:59 PM
To: [EMAIL PROTECTED]
Subject: JWS and complex parameters


The axis user's guide states that when using jws files, "you can't specify
custom type mappings."

Does that mean that any method parameters return types have to be String,
int, etc., and cannot be user-defined (say a "Dog" class, for example,
which is in the same dir as the jws file), unless you generate and
register the serializers separately?

I've created a DogService.jws file which has a method which returns a Dog
object.  It is compiled just fine and DogService.jws?WSDL works great, but
when I call the service it gives an error ("IOException: No serializer
found for class Dog in registry...").)

I suppose the serializers aren't generated when .jws files are used for
the first time?

Thanks,
-CM

Reply via email to