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 "Volanis, Alexander" <AV...@rsasecurity.com> on 2002/05/10 19:49:43 UTC

Interoperability issue with MSVC++.Net

Hi all,

I have developed an Axis RPC web service that works very nicely
with C#.Net and VB.Net clients. Doing the same with VC++.Net which
uses ATL 7.0 to parse the XML messages revealed two issues with the
generated WSDL. 

Issue 1)
The generated WSDL contains response message definitions
that look like this:

<wsdl:message name="methodResponse">
  <wsdl:part name="return" type="tns1:complexTypeResponse" /> 
</wsdl:message>

When the method is invoked the result message looks like this:

<SOAP-ENV:Body>
 <ns1:methodResponse
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="method">
  <methodReturn xsi:type="ns2:complexTypeResponse"
xmlns:ns2="http://rsasecurity.com/testService">
...
  </methodReturn>
 </ns1:methodResponse>
</SOAP-ENV:Body>

MSVC++.Net generates some table based parsing that assumes the
response element will be named "return" instead of "methodReturn".
I looked into the Axis sources but could not pinpoint the problem.
It seems to me that the Java2WSDL should be able to keep the
element name consistent with the method invocation. I tried the
WSDD operation element returnQName attribute but I had no success.
Is the returnQName attribute supported in Axis?

Issue 2)
This problem appeared in beta 2 and I can still see this in the
5/6/2002 nightly build. The problem has to do with the generated
operation bindings. The namespace for input is different from the
namespace for output. The MS service proxy generator utility
stops with an error indicating that namespaces must be the same.
This is what I get for the operation method binding:

<wsdl:operation name="method">
 <wsdlsoap:operation soapAction="" /> 
  <wsdl:input>
   <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="method" use="encoded" /> 
  </wsdl:input>
  <wsdl:output>
   <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://localhost:7001/axis/services/test" use="encoded" /> 
 </wsdl:output>
</wsdl:operation>

Notice how the namespace is the method name for input and the service
URI for output. Both of these problems I can correct by editing the
WSDL but I would rather see the correct WSDL generated instead.

Thank you for your time and this great product!

Regards,
Alex Volanis

Consulting Engineer
e-mail: avolanis@rsasecurity.com