<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

Reply via email to