axis-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jared Betteridge <ja...@betteridge.us>
Subject serialization problem in axis 1.3 with bean that includes an array of strings
Date Mon, 27 Feb 2006 00:22:47 GMT
Hi,

I'm using the axis 1.3 java2wsdl tool (with -y WRAPPED) to create a wsdl
from an existing java class which has a method that returns a bean
object that contains an array of strings. My client is written in gsoap
(2.7.6e), and the problem I am having is that my gsoap client is unable
to deserialize the array inside the returned bean object.  The reason is
that the name of the XML elements for the strings inside the array do
not match what the WSDL specifies.

Here is a snippet from my wsdl showing the response to an "orderMeal"
method that returns a Meal bean object containing an array of strings:

   <element name="orderMealResponse">
    <complexType>
     <sequence>
      <element name="orderMealReturn" type="impl:Meal"/>
     </sequence>
    </complexType>
   </element>

   <complexType name="Meal">
    <sequence>
     <element name="appetizers" nillable="true"
type="impl:ArrayOf_xsd_string"/>
     <element name="mainCourse" nillable="true" type="xsd:string"/>
    </sequence>
   </complexType>

   <complexType name="ArrayOf_xsd_string">
    <sequence>
     <element maxOccurs="unbounded" minOccurs="0" name="item"
type="xsd:string"/>
    </sequence>
   </complexType>


The body of an actual SOAP response that my gsoap client receives is:

 <soapenv:Body>
  <orderMealResponse xmlns="urn:Tarray">
   <orderMealReturn>
    <appetizers>
     <appetizers>Chips</appetizers>
     <appetizers>Salsa</appetizers>
    </appetizers>
    <mainCourse>Pizza</mainCourse>
   </orderMealReturn>
  </orderMealResponse>
 </soapenv:Body>

My gsoap client does not like the fact that the name of the XML element
for the string array members is "appetizers".  According to the WSDL
these array members should be named "item".  If I intercept the SOAP
response using WebScarab and change the array part of the response to  be:

    <appetizers>
     <item>Chips</item>
     <item>Salsa</item>
    </appetizers>

then my gsoap client is happy and everything works.  So why isn't axis
naming these array elements "item" as specified in the WSDL?  Is this a
bug in axis? How can I get my gsoap client to work with this axis web
service?

Thanks!

Jared


Mime
View raw message