axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Keith Hatton" <khat...@axiomsystems.com>
Subject RE: Non-Bean Object Serialization
Date Thu, 22 Jan 2004 14:03:20 GMT
<snip>
Is there a good reference you can point me to for hand-creation of WSDL 
and WSDD that would include use of non-bean objects?  I think that lack 
of knowledge is part of my stumbling.
</snip>

My knowledge is based mainly on "Building Web Services with Java" by Steve Graham et al, published
by SAMS. There is quite a good chapter on WSDL, and a good overview of the Axis architecture,
though some specifics may be dated by now (it was released before Axis 1.0).

Other suggestions are to take a look at the WSDL generated by Axis for some of its samples
or to use a WSDL editor - some are listed on the Axis Wiki/FAQ pages. Basically you need to
generate XML schema descriptions for your objects that are not Java Beans. In essence this
will probably boil down to
<complexType name="...>
 <sequence>
  <element name="..." type="..."/>
  ...
 </sequence>
</complexType>
with an <element> for each member variable of the object that needs to be serialized
(IIRC WSDL2Java works fine if your object follows the JavaBean get/set convention, so you
may want to start by assuming that you need an <element> for every getXXX method).

The WSDD files need something like this:
        <typeMapping xmlns:ns="http://namespace" qname="ns:class"
            type="java:fully.qualified.class.name"
            serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
            deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
            encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

By convention the namespace is the reverse of the Java package name.
In server-config.wsdd this goes under each <service>.
In client-config.wsdd you just need one entry per type.
Just replace the serializer/deserializer factory names with your own.

The best source for writing your own serializer/deserializer is probably the Axis source code
and JavaDoc.

Hope this helps
Keith


Mime
View raw message