I am using the client.Call object to set headers. When I do this it is
serialized with
the contents in a multiRef element, and the header is refering to it. The
element is only
used by that single header, but I do not see how to avoid the multiref
serialization.
Also, I am using the BeanSerializer, but the elements are being serialized
in the wrong
order. Is there a simple way to indicate to the serializer which order the
parameters
are to appear? The getter and setter methods in the class file _are_ in the
order that
I want, and I notice the if I were to provide bean info, that the order will
still be
derived via relective lookup.
Code:
call.registerTypeMapping(phc, new QName(postNS, "post"),
org.apache.axis.encoding.ser.BeanSerializerFactory.class,
org.apache.axis.encoding.ser.BeanDeserializerFactory.class, true);
SOAPHeader h = new SOAPHeader(postNS, "post", ph);
call.addHeader(h);
Result:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Header>
<ns1:post href="#id0"
xmlns:ns1="http://grandcentral.com/schemas/post/v1"/>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<good xmlns="http://nowhere.org/what">
<arg0 xsi:type="xsd:string">one</arg0>
<arg1 xsi:type="xsd:string">two</arg1>
<arg2 xsi:type="xsd:string">three</arg2>
</good>
<multiRef id="id0" SOAP-ENC:root="0" xsi:type="ns2:post"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://grandcentral.com/schemas/post/v1">
<timeout xsi:nil="true"/>
<to xsi:type="xsd:string">tboulos.grandcentral.com/client</to>
<topic xsi:nil="true"/>
</multiRef>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
---
Tom Boulos <[EMAIL PROTECTED]>
Grand Central Communications
http://www.grandcentral.com