There seems to be an interop problem with .NET with jagged arrays
(array of arrays).  I have a method exposed by Axis like so:

    public String[][] getArrayOfStringArray(String[][] arg)    {
        return arg;
    }

Here is the relevant part of the WSDL that was generated by Axis for the
String[][] type:

...
  <complexType name="ArrayOfArrayOf_xsd_string">
   <complexContent>
    <restriction base="soapenc:Array">
     <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[][]"/>
    </restriction>
   </complexContent>
  </complexType>
  <element name="ArrayOfArrayOf_xsd_string" nillable="true"
type="intf:ArrayOfArrayOf_xsd_string"/>
...


When I use .NET's WSDL.exe to generate the proxy, it generates a different 
type than what is expected.  (It generates String[][] as string[] instead of 
string[][]).

        public string[] getArrayOfStringArray(string[] arg) {
            object[] results = this.Invoke("getArrayOfStringArray",
                      new object[] { arg});
            return ((string[])(results[0]));
        }

Has anyone run into this problem also ?  Anyone knows of a workaround
(wsdl written differently etc)


There may be potentially be another problem. This one is in Axis's 
ArraySerializer.java code. In ArraySerializer.java,
there is a hard-coded boolean (this is beta2 code) named  enbale2Dim:


        // Discover whether array can be serialized directly as a 
two-dimensional
        // array (i.e. arrayType=int[2,3]) versus an array of arrays.
        ...
         boolean enable2Dim = true;  // Enabled 2-Dim processing

This code attempts to send an array of arrays as a 2 dimensional array. The 
problem is that .NET cannot handle multi-dimensional arrays (but can handle 
jagged arrays).  Can this boolean not be hard-coded but instead be 
configurable so it may have a chance of interoperating with .NET ?





_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com

Reply via email to