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/15 19:35:20 UTC

[BUG] Beta2 interop (was RE: Interoperability issue with MSVC++.N et)

Hi all,

I know you all have a very busy schedule but nobody has acknowledged
this message in the past few days and I am wondering if it was noticed.
I believe there is an interoperability issue here with respect to clients
written using VC++.Net. If you need additional info I can provide anything
you need.

Thank you,
Alex Volanis

Consulting Engineer
e-mail: avolanis@rsasecurity.com

-----Original Message-----
From: Volanis, Alexander 
Sent: Friday, May 10, 2002 1:50 PM
To: 'axis-dev@xml.apache.org'
Subject: 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

RE: [BUG] Beta2 interop (was RE: Interoperability issue with MSVC++.Net)

Posted by Fred Hartman <fr...@webmethods.com>.
I believe this is a .NET problem.

I understand the naming rules are as follows:

If the part references a simple type, the name of the part is used for
the SOAP:Body element name.

If the part references a complex type, the names of the children of the
complexType are used as the SOAP:Body element names.

If the part references an element, the localName of the element is used
for the SOAP:Body element.

-Fred

-----Original Message-----
From: Volanis, Alexander [mailto:AVolanis@rsasecurity.com] 
Sent: Wednesday, May 15, 2002 1:35 PM
To: 'axis-dev@xml.apache.org'
Subject: [BUG] Beta2 interop (was RE: Interoperability issue with
MSVC++.Net)

Hi all,

I know you all have a very busy schedule but nobody has acknowledged
this message in the past few days and I am wondering if it was noticed.
I believe there is an interoperability issue here with respect to
clients
written using VC++.Net. If you need additional info I can provide
anything
you need.

Thank you,
Alex Volanis

Consulting Engineer
e-mail: avolanis@rsasecurity.com

-----Original Message-----
From: Volanis, Alexander 
Sent: Friday, May 10, 2002 1:50 PM
To: 'axis-dev@xml.apache.org'
Subject: 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