Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.2 Beta
-
None
-
Windows 2000 server, JDK 1.4.2_03, .NET 1.1, Axis 1.2 Beta
Description
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).