Hi,
I have noticed that array parameters (in or out) seem to be serialized
incorrectly in Axis 1.3. I am attaching a sample WSDL here, along with
the corresponding input and output. In summary, instead of creating an
element for the array parameter (containing the array members) it
creates one element for each member, without any all-enclosing parent.
Note that we are using WSDL2Java to generate the service implementation
from existing wsdl.
WSDL snippet (complete wsdl attached):
<wsdl:message name="DemoResponse">
<wsdl:part name="Foos" type="impl:ArrayOfFoos" />
<wsdl:part name="Bars" type="impl:ArrayOfBars" />
<wsdl:part name="SomeNumber" type="impl:positiveFloat" />
</wsdl:message>
Serialized output (simplified slightly - complete output attached):
<GetDemoResponse>
<Foos xsi:type="ns1:Foo">
<MyPayload>hello</MyPayload>
</Foos>
<Bars xsi:type="ns2:Bar">
<MyPayload>good</MyPayload>
</Bars>
<Bars xsi:type="ns3:Bar">
<MyPayload>bye</MyPayload>
</Bars>
<SomeNumber xsi:type="ns4:positiveFloat">11.7</SomeNumber>
</GetDemoResponse>
In Axis 1.1 this worked as expected. Is there anyway to get this to
serialize as:
<GetDemoResponse>
<Foos xsi:type="ns1:ArrayOfFoos" soapenc:arrayType="ns1:Foo[1]" >
<Foo xsi:type="ns1:Foo">
<MyPayload>hello</MyPayload>
</Foo>
</Foos>
<Bars xsi:type="ns1:ArrayOfBars" soapenc:arrayType="ns1:Bar[2]" >
<Bar xsi:type="ns2:Bar">
<MyPayload>good</MyPayload>
</Bar>
<Bar xsi:type="ns3:Bar">
<MyPayload>bye</MyPayload>
</Bar>
</Bars>
<SomeNumber xsi:type="ns4:positiveFloat">11.7</SomeNumber>
</GetDemoResponse>
Thanks for your help in advance.
-Erik
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
targetNamespace="http://demo.radialpoint.com/service"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:impl="http://demo.radialpoint.com/service"
xmlns:type="http://demo.radialpoint.com/type">
<wsdl:types>
<schema
targetNamespace="http://demo.radialpoint.com/type"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="Foo">
<sequence>
<element name="MyPayload" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="Bar">
<sequence>
<element name="MyPayload" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="Blah">
<sequence>
<element name="MyPayload" type="xsd:string"/>
</sequence>
</complexType>
<complexType name="Boing">
<sequence>
<element name="MyPayload" type="xsd:string"/>
</sequence>
</complexType>
</schema>
<schema
targetNamespace="http://demo.radialpoint.com/service"
xmlns="http://www.w3.org/2001/XMLSchema">
<import namespace="http://demo.radialpoint.com/type"/>
<complexType name="ArrayOfFoos">
<complexContent>
<restriction base="soapenc:Array">
<sequence>
<element name="Foo"
type="type:Foo" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute ref="soapenc:arrayType"
wsdl:arrayType="type:Foo[]" />
</restriction>
</complexContent>
</complexType>
<complexType name="ArrayOfBars">
<complexContent>
<restriction base="soapenc:Array">
<sequence>
<element name="Bar"
type="type:Bar" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute ref="soapenc:arrayType"
wsdl:arrayType="type:Bar[]" />
</restriction>
</complexContent>
</complexType>
<complexType name="ArrayOfBlahs">
<complexContent>
<restriction base="soapenc:Array">
<sequence>
<element name="Blah"
type="type:Blah" minOccurs="0"
maxOccurs="unbounded" />
</sequence>
<attribute ref="soapenc:arrayType"
wsdl:arrayType="type:Blah[]" />
</restriction>
</complexContent>
</complexType>
<complexType name="CustomException">
<sequence>
</sequence>
</complexType>
<simpleType name='positiveFloat'>
<restriction base='float'>
<minInclusive value='0.0' />
</restriction>
</simpleType>
</schema>
</wsdl:types>
<wsdl:message name="CustomException">
<wsdl:part name="CustomException" type="impl:CustomException"/>
</wsdl:message>
<wsdl:message name="DemoRequest">
<wsdl:part name="Boing" type="type:Boing" />
<wsdl:part name="Blahs" type="impl:ArrayOfBlahs" />
</wsdl:message>
<wsdl:message name="DemoResponse">
<wsdl:part name="Foos" type="impl:ArrayOfFoos" />
<wsdl:part name="Bars" type="impl:ArrayOfBars" />
<wsdl:part name="SomeNumber" type="impl:positiveFloat" />
</wsdl:message>
<wsdl:portType name="DemoService">
<wsdl:operation name="GetDemo"
parameterOrder="Boing Blahs">
<wsdl:input message="impl:DemoRequest"
name="DemoRequest" />
<wsdl:output message="impl:DemoResponse"
name="DemoResponse" />
<wsdl:fault message="impl:CustomException"
name="CustomException" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="DemoServiceSoapBinding"
type="impl:DemoService">
<wsdlsoap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="GetDemo">
<wsdlsoap:operation soapAction="" />
<wsdl:input name="DemoRequest">
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://demo.radialpoint.com/service"
use="literal" />
</wsdl:input>
<wsdl:output name="DemoResponse">
<wsdlsoap:body
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://demo.radialpoint.com/service"
use="literal" />
</wsdl:output>
<wsdl:fault name="CustomException">
<wsdlsoap:fault
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://demo.radialpoint.com/service"
use="literal"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="DemoService">
<wsdl:port binding="impl:DemoServiceSoapBinding"
name="demo-service/1.0">
<wsdlsoap:address
location="http://localhost:7001/demo-service/services/demo-service/1.0"
/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
POST /demo-service/services/demo-service/1.0 HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: localhost:7001
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 499
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><GetDemo
xmlns="http://demo.radialpoint.com/service"><Boing xmlns=""><MyPayload>boing
boing</MyPayload></Boing><Blahs xmlns=""><Blahs><MyPayload>nyuk
nyuk</MyPayload></Blahs><Blahs><MyPayload>da da
da</MyPayload></Blahs></Blahs></GetDemo></soapenv:Body></soapenv:Envelope>
HTTP/1.1 200 OK
Connection: close
Date: Tue, 31 Jan 2006 20:25:43 GMT
Content-Type: text/xml; charset=utf-8
X-Powered-By: Servlet/2.4 JSP/2.0
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><GetDemoResponse
xmlns="http://demo.radialpoint.com/service"><Foos xsi:type="ns1:Foo" xmlns=""
xmlns:ns1="http://demo.radialpoint.com/type"><MyPayload>hello</MyPayload></Foos><Bars
xsi:type="ns2:Bar" xmlns=""
xmlns:ns2="http://demo.radialpoint.com/type"><MyPayload>good</MyPayload></Bars><Bars
xsi:type="ns3:Bar" xmlns=""
xmlns:ns3="http://demo.radialpoint.com/type"><MyPayload>bye</MyPayload></Bars><SomeNumber
xsi:type="ns4:positiveFloat" xmlns=""
xmlns:ns4="http://demo.radialpoint.com/service">11.7</SomeNumber></GetDemoResponse></soapenv:Body></soapenv:Envelope>