Tami,

Here's what I've done to make it work with .NET:

I've located the following code in the
org.apache.axis.encoding.ser.ArraySerializer.serialize() method
And in both places, commented out the if(...) condition in order to
place an array wrapper around the elements for arrays specified using
the <element
minOccurs="0" maxOccurs="unbounded"...> WSDL syntax.


 ------------ begin snippet (Line# 322) ------------------------
 
// if (!maxOccursUsage) {
//****** commented out *****//
      serializeAttr = null;  // since we are putting them here
      context.startElement(name, attributes);
     elementName = Constants.QNAME_LITERAL_ITEM; 
// }
//****** commented out *****//
 
 ------------ end snippet --------------------------------------
 

 With the corresponding serialization of a closing wrapper later on:
 

 ------------ begin snippet (Line# 363)--------------------------
 
// if (!maxOccursUsage)
//****** commented out *****//
            context.endElement();
 
 ------------ end snippet ---------------------------------------

 

In order to set the appropriate type of array elements, I also changed
the following code (a bit of a blind hack, but it works) in the same
method FROM:

 ------------ begin snippet (Line# 336)--------------------------

context.serialize(elementName, serializeAttr, aValue,
                                      componentQName, // prefered type
QName
                                      true,   // Send null values
                                      null);  // Respect default type
config

 ------------ end snippet ---------------------------------------

TO:

 ------------ begin snippet -------------------------------------

context.serialize(elementName, serializeAttr, aValue,
        
msgContext.getTypeMapping().getXMLType(aValue.getClass(),null,encoded),
// prefered type QName
        true,   // Send null values
         null);  // Respect default type config

 ------------ end snippet ---------------------------------------


Remember, your .NET client needs to use the 
System.Xml.Serialization.XmlArrayItemAttribute("item")]
attribute on your web service methods (in your Reference.cs file) in
order to consume arrays serialized form axis with elements named <item>.

I hope this helps,
Eric








-----Original Message-----
From: Tami Wright [mailto:[EMAIL PROTECTED] 
Sent: Monday, September 27, 2004 12:25 PM
To: [EMAIL PROTECTED]
Subject: Array of Objects in Axis and .NET interop

Hi,

I wondered what the status was with the message thread originally posted
by Eric Chijioke entitled "Axis and .NET interoperability - Arrays".
Any interim solution that can be posted until the bug is resolved would
be appreciated.

Best Regards,

tami

Reply via email to