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

Reply via email to