You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Chris Pruett <ch...@ams.com> on 2004/04/27 22:10:15 UTC

Generating array items with xsi:type

I'm having trouble calling a webMethods web service because Axis is not
generating a SOAP message with typed array items.  For example:

<?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>
  <ns1:receiveSOAP2
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://leonardo/mpruett.webService">
   <SimpleAPIDoc href="#id0"/>
  </ns1:receiveSOAP2>
  <multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:__SimpleAPIDoc"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://localhost/mpruett/webService/receiveSOAP2">
   <DoubleList1 xsi:type="soapenc:Array"
soapenc:arrayType="xsd:double[1]">
    <item>0.0</item>
   </DoubleList1>
  </multiRef>
 </soapenv:Body>
</soapenv:Envelope>

The <item> in <DoubleList1> does not have a xsi:type, and thus webMethods
returns an error to me.  However, change if I change the xml:

<?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>
  <ns1:receiveSOAP2
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://leonardo/mpruett.webService">
   <SimpleAPIDoc href="#id0"/>
  </ns1:receiveSOAP2>
  <multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="ns2:__SimpleAPIDoc"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns2="http://localhost/mpruett/webService/receiveSOAP2">
   <DoubleList1 xsi:type="soapenc:Array"
soapenc:arrayType="xsd:double[1]">
    <item xsi:type="xsd:double">0.0</item>
   </DoubleList1>
  </multiRef>
 </soapenv:Body>
</soapenv:Envelope>

... and manually post it to the server, webMethods consumes it correctly.

It's not clear to me if this is a problem with Axis or webMethods.  Can
anyone provide any insight as to why this might be happening?  Is there a
way to get Axis to generate the SOAP message with typed array items?

Thanks,
Chris Pruett.