Hi all,
I have a service I'm trying to invoke - the SOAP request generated by
axis is as follows :
-----------------------------------
<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://www.mygrid.org.uk/dicomtest.wsdl"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
<soapenv:Body>
<ns1:build
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ns1:lsids soapenc:arrayType="ns1:ArrayOf_xsd_string[1]"
xsi:type="soapenc:Array">
<ns1:lsids xsi:type="xsd:string">sample data</ns1:lsids>
</ns1:lsids>
</ns1:build>
</soapenv:Body>
</soapenv:Envelope>
-----------------------------------
The problem is the 'xsi:type="soapenc:Array"' - this causes the
following fault from the service :
-----------------------------------
<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>
<soapenv:Fault>
<faultcode>Server.userException</faultcode>
<faultstring>No such operation 'build'</faultstring>
<detail>
<ns1:hostname
xmlns:ns1="http://xml.apache.org/axis/">rpc103.cs.man.ac.uk</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
-----------------------------------
Poking at this in SoapUI and changing the xsi:type to be
'ns1:ArrayOf_xsd_string' makes the service work. I looked at
ArraySerializer.java and there's some code in there with a rather old
comment about forcing the type to soapenc:Array to increase the chances
of interop tests working.
1) Is this still a valid comment? The date was three and a half years
ago so this has probably changed. (comment at 2/6/2002)
2) Can I turn this off somehow, maybe make it configurable by some kind
of property with the current behaviour as the default?
As far as I can see there are about ten lines of code which are breaking
this service invocation, should they be there?
Incorrect request message is being generated by Axis 1.3, the service is
running on Axis 1.2.1 with a copy of the WSDL at :
http://www.ebi.ac.uk/~tmo/SimpleBuilderPortType.xml.
Tom