You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Andy Micone (JIRA)" <ax...@ws.apache.org> on 2004/12/03 18:26:27 UTC

[jira] Updated: (AXIS-1308) Axis 1.2 beta and .NET 1.1: Problem with arrays

     [ http://nagoya.apache.org/jira/browse/AXIS-1308?page=history ]

Andy Micone updated AXIS-1308:
------------------------------

    Attachment: cdx.wsdl

I'm using a WSDL but it wasn't generated from a .NET service, it was supplied to us as was the .Net client that consumes it. WSDL2Java under Axis 1.1 generates server stubs that correctly answer the .NET client. Debates about what is the correct implementation aside, I think I'm in the same boat as a lot of users that just need to create services to be consumed by .NET clients in the simplest way possible. 

I do have a suggestion, if you look below at my deploy.wsdd snippet you'll note that the serializer and deserializer for array objects are explicitly defined. Why not have another serializer/deserializer class to handle the case where you prefer the xsd types over the soap encoding types and then put a switch on WSDL2Java supported by the ant task to write this into the deploy.wsdd for you. I think that would fit the scenario that many users are in where the main reason we are using Axis is to interoperate with other platforms and the bulk of our work should be on the back-end processing and not the data we are pushing across the transom.

      <typeMapping
        xmlns:ns="http://exchangenetwork.net/schema/v1.0/node.xsd"
        qname="ns:ArrayOfstring"
        type="java:java.lang.String[]"
        serializer="org.apache.axis.encoding.ser.ArraySerializerFactory"
        deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory"
        encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      />

> Axis 1.2 beta and .NET 1.1: Problem with arrays
> -----------------------------------------------
>
>          Key: AXIS-1308
>          URL: http://nagoya.apache.org/jira/browse/AXIS-1308
>      Project: Axis
>         Type: Bug
>   Components: Basic Architecture
>     Versions: 1.2 Beta
>  Environment: Windows 2000 server, JDK 1.4.2_03, .NET 1.1, Axis 1.2 Beta
>     Reporter: Thomas Boerkel
>      Fix For: 1.2
>  Attachments: SoapTest_11RC2.wsdl, SoapTest_12Beta.wsdl, cdx.wsdl
>
> I was able to return an array from an Axis 1.1 RC2 server to a .NET 1.1 client without problems. 
> With Axis 1.2 beta, the .NET client throws an exception:
> System.InvalidOperationException: There is an error in XMLdocument (5, 5). ---> System.InvalidOperationException: The specified type as not recognized: name='string', namespace='http://schemas.xmlsoap.org/soap/encoding/', at <arrayTestReturn xmlns=''>.
> I don't know, if this is a bug in Axis or .NET, but I think the interop is very important, so even a workaround in Axis for a .NET bug should be considered, until MS fixes their bug.
> This is the response XML from Axis 1.1 RC2:
> <?xml version="1.0" encoding="UTF-8"?>
> <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>
>   <ns1:arrayTestResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://p2test.p2plus.apag.com">
>    <arrayTestReturn xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[3]" xmlns:ns2="http://www.w3.org/2002/12/soap-encoding" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>     <item>5</item>
>     <item>6</item>
>     <item>7</item>
>    </arrayTestReturn>
>   </ns1:arrayTestResponse>
>  </soapenv:Body>
> </soapenv:Envelope>
> And this from Axis 1.2 beta:
> <?xml version="1.0" encoding="UTF-8"?>
> <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>
>   <ns1:arrayTestResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://p2test.p2plus.apag.com">
>    <arrayTestReturn soapenc:arrayType="soapenc:string[3]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
>     <item xsi:type="soapenc:string">5</item>
>     <item xsi:type="soapenc:string">6</item>
>     <item xsi:type="soapenc:string">7</item>
>    </arrayTestReturn>
>   </ns1:arrayTestResponse>
>  </soapenv:Body>
> </soapenv:Envelope>
> This is the Java method signature:
>   public String[] arrayTest(int[] numbers)
> We do not use deployment and we do not use Tomcat, but something like this:
>       axisServer = new AxisServer(new NullProvider());
>       axisServer.init();
>       msg = new Message(xml);
>       msgContext = new MessageContext(axisServer);
>       msgContext.setRequestMessage(msg);
>       service = getService(completeName);
>       msgContext.setService(service);
>       axisServer.invoke(msgContext);
>       msg = msgContext.getResponseMessage();
>       xml= msg.getSOAPPartAsString();
> If I use
> service.setStyle(Style.WRAPPED)
> service.setUse(Use.LITERAL)
> Then this is the response from Axis:
> <?xml version="1.0" encoding="UTF-8"?>
> <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>
>   <arrayTestResponse xmlns="http://p2test.p2plus.apag.com">
>    <arrayTestReturn>5</arrayTestReturn>
>    <arrayTestReturn>6</arrayTestReturn>
>    <arrayTestReturn>7</arrayTestReturn>
>   </arrayTestResponse>
>  </soapenv:Body>
> </soapenv:Envelope>
> and .NET returns NULL to the client code.
> Attaching Axis 1.1 RC2 WSDL and 1.2 Beta WSDL (almost identical, besides the namespace desclaration).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira