I've put together two webapps for comparision: one using Axis 1.1, the other using Axis 1.2. They can be downloaded here:

http://www.public.iastate.edu/~andrewv/axis/webapps.zip

They each have one service, StringArrayServer. In each case, the service is implemented by a Java class with one method:

String[] getStringArray();

Each service is deployed via the AdminClient with the following deploy.wsdd:

<deployment name="test" xmlns="http://xml.apache.org/axis/wsdd/";
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java";
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance";>
    <service name="StringArrayServer" provider="java:RPC">
                <parameter name="scope" value="request"/>
                <parameter name="className" value="StringArrayServer"/>
                <parameter name="allowedMethods" value="*"/>
        </service>
</deployment>


The two versions of Axis generate nearly identical WSDL files for the services via the ?wsdl query in the URL.

When a request is made, Axis 1.1 returns this XML:

<?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:getStringArrayResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns1="http://DefaultNamespace";> <ns1:getStringArrayReturn xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[3]" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";>
                                <item>string 1</item>
                                <item>string 2</item>
                                <item>string 3</item>
                        </ns1:getStringArrayReturn>
                </ns1:getStringArrayResponse>
        </soapenv:Body>
</soapenv:Envelope>

Axis 1.2 returns this XML, which fails to work with a .NET client built from the WSDL generated by the ?wsdl comand:

<?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:getStringArrayResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; xmlns:ns1="http://DefaultNamespace";> <getStringArrayReturn soapenc:arrayType="soapenc:string[3]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/";> <getStringArrayReturn xsi:type="soapenc:string">string 1</getStringArrayReturn> <getStringArrayReturn xsi:type="soapenc:string">string 2</getStringArrayReturn> <getStringArrayReturn xsi:type="soapenc:string">string 3</getStringArrayReturn>
                        </getStringArrayReturn>
                </ns1:getStringArrayResponse>
        </soapenv:Body>
</soapenv:Envelope>

Is this considered a bug or just the new intended behavior?

Thanks,

Andrew


At 10:48 AM 6/22/2005, you wrote:
Oliver,

I think I have a problem similar to yours. I had an RPC service written in Java from which I generated WSDL that was consumed by a .NET client. The client is in use, so I can't change the interface now. Upgrading to Axis 1.2 from 1.1 changes how arrays of Strings get returned to the .NET client--so I can't upgrade to Axis 1.2 without breaking the current system and making changes on the client. Like you, I know I'm doing things somewhat backward (going from Java to WSDL rather than the other way around). Is backward compatibility for this sort of scenario simply not a goal of Axis? Can any developers comment?

Thanks,

Andrew


***original message***

Hi Dims,

thanks for your answer. I think that there is already a bug report for this bug (if \
it's stil present). I'm not sure but maybe I'm doing something bad with my \
deployment. The problem is: The webservices I'm working on are generated from \ CORBA-IDL - not from a WSDL as I have explained in my mail "AXIS 1.2 and MS VB \ interop (arrays)" So the way it goes is CORBA-IDL -> idlj-> Java-Stubs -> deploy as \
WS -> generate WSDL -> generate Client-Stub.

The generated WSDL is (the "getUserDomainsByName"-Methode returning an Array of \
"TDomain" makes trouble):


Reply via email to