Do you define a Serializer in your deploy.wsdd file for all your classes, or
just the abstract class?  I'm not sure if this will fix your problem, but I
believe that Axis will only serialize the classes that are specified in the
wsdd file.  The only thing I'm not sure of is if Axis will match the class
being returned to the correct serializer based on the type specified by the
return or by the actual type.  You will find out for sure if you have
serializers defined for all the concrete class types.

Jim Stickley
Birch Telecom
(816) 300-6743
[EMAIL PROTECTED]


-----Original Message-----
From: Dunn, Scott [mailto:[EMAIL PROTECTED]] 
Sent: Thursday, July 11, 2002 2:10 PM
To: [EMAIL PROTECTED]
Subject: Serialization of return values and inheritance hierarchies

I have a very granular interface which defines a small number of operations
(5) on a large number of entities ( > 100).  Rather than having an interface
that defines more than 500 methods I have all the entities extend a base
class and define the interface in terms of the base class. By ensuring that
all the required type mappings exist in the deployment descriptor this works
fine for the request portion of the message. i.e. Axis correctly figures out
how to deserialize the parameters that are passed in the SOAP message even
though the operation is defined in terms of the base class. However, the
return value does not work in the same fashion. Axis does not pay any
attention to the actual class of the return value and instead uses the
operation definition only, which results in all the properties being lost.

Should this be the case? Is it not reasonable to expect that Axis would
serialize the object according to its actual class?

Thanks,

Scott.

Reply via email to