This seems to be a serious regression bug... But maybe I'm doing something wrong...

I was using 1.2 beta, and everything was working for me. Now under 1.2 final, the handling of arrays appears broken.

Here is the error:
org.apache.axis.AxisFaultorg.xml.sax.SAXException: Found character data inside an array element while deserializing

Here is the message that it choked on:
<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>
   <getSupportedMatchAlgorithmsResponse xmlns="urn://hl7.org/CTSVAPI">
<getSupportedMatchAlgorithmsReturn xmlns:ns1="urn://hl7.org/CTSVAPI" xsi:type="ns1:ArrayOf_xsd_string">IdenticalIgnoreCase</getSupportedMatchAlgorithmsReturn> <getSupportedMatchAlgorithmsReturn>StartsWithIgnoreCase</getSupportedMatchAlgorithmsReturn> <getSupportedMatchAlgorithmsReturn>EndsWithIgnoreCase</getSupportedMatchAlgorithmsReturn> <getSupportedMatchAlgorithmsReturn>ContainsPhraseIgnoreCase</getSupportedMatchAlgorithmsReturn>
   </getSupportedMatchAlgorithmsResponse>
 </soapenv:Body>
</soapenv:Envelope>


What it is supposed to be returning is a simple String[].
A snippit  from the wsdl file:
  <element name="getSupportedMatchAlgorithms">
   <complexType/>
  </element>
  <element name="getSupportedMatchAlgorithmsResponse">
   <complexType>
    <sequence>
<element maxOccurs="unbounded" name="getSupportedMatchAlgorithmsReturn" type="xsd:string"/>
    </sequence>
   </complexType>
  </element>


My build process is kind of complicated - my initial definition of the API is in IDL. The idl is compiled into Java. Then, my WSDL is generated by the java2wsdl tool, using the "-y WRAPPED" option.

Then, I generate java using wsdl2java tool - and I implement my API using the resulting java classes. One thing that I noted here, was that 1.2 beta generated "ArrayOf_X" classes for each array object, while 1.2 final does not generate any ArrayOf_X classes.

Finally I install the code into my Axis server, and try it out. I can call most of the methods in my API - but anything that returns an Array throws an exception, as detailed above.

Thanks for any advice,

Dan







Reply via email to