Hmm, I'm really not very familiar with the axis development or testing
environments. Otherwise I would attempt to fix it myself...
Is there an official bug open for this, or workarounds? This is a show
stopping bug for me....
Dan
Tom Jordahl wrote:
Hi Dan,
Yes, I think
we do have some serious
regressions in the array area since RC2.
Test cases
that run in our harness would
be most welcome, that will ensure that we don’t break it again. L
--
Tom Jordahl
Macromedia Server Development
This
seems to be a serious regression bug... But maybe I'm doing something
wrong...
I was using 1.2 RC2, 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
|