Re: Wsdl2java ignores soapAction?

2008-01-31 Thread Daniel Kulp

This is actually per spec according to the WS-I Basic Profile.   Section

---snip---
5.6.7 Wire Signatures for Operations
An endpoint that supports multiple operations must unambiguously identify 
the operation being invoked based on the input message that it receives. 
This is only possible if all the operations specified in the 
wsdl:binding associated with an endpoint have a unique wire signature. 

 R2710  The operations in a wsdl:binding in a DESCRIPTION MUST result in  
wire signatures that are different from one another. 

The Profile defines the "wire signature" of an operation in a  
wsdl:binding to be the fully qualified name of the child element of the  
soap:Body of the SOAP input message it describes. For the case of an 
empty  soap:Body this name is an empty string. 
In the case of rpc-literal binding, the operation name is used as a 
wrapper for the part accessors. In the document-literal case, since a 
wrapper with the operation name is not present, the message signatures 
must be correctly designed so that they meet this requirement.
---snip---

We probably could add a flag to allow it to ignore such checks, but then 
you really are on your own in terms of interopability.   You'd be 
outside the specs.

Dan




On Thursday 31 January 2008, Marco Piraccini wrote:
> I tried to apply wsdl2java to the WSDL below. The WSDL operations
> defined are both referring to the same type element as input message,
> so the soap body are the same for both the messages. To solve this
> collision, i added the soapAction to the binding, but the wsdl2java
> seems to ignore it.
>
> The message returned by the tool is:
>
> WSDLToJava Error : Non unique body parts! In a port, operations must
> have unique operation signaure on the wire for successful dispatch. In
> port {urn:test}EchoTestPort, Operations "{urn:test}echoRequestB" and
> "{urn:test}echoRequestA" have the same request body block
> {urn:test}TRequestA
>
> That's correct (if no soapAction is defined), but in my opinion
> shouldn't be returned with the soapAction defined.
>
> Marco.
>
>  xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:ns1="http://test.it";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
> xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding";
> xmlns:tns="urn:test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> targetNamespace="urn:test"> 
>   elementFormDefault="qualified" targetNamespace="urn:test">
>
>  
>
>   name="dataBoolean" nillable="false" type="xsd:boolean"/>
>
>  
>
>  
>
>   name="dataString" nillable="false" type="xsd:string"/>
>
>  
>
>  
>
>  
> name="typeA" nillable="false" type="tns:TypeA"/>
>  
>
>  
>  
>
>  
> name="typeB" nillable="false" type="tns:TypeB"/>
>  
>
>  
>
>  
>
>  
> type="tns:TypeA"/>
> type="tns:TypeB"/>
>  
>
>  
>
>
>
>
>  
>  
>
>
>  
>  
>
>
>  
>  
>
>
>  
>
>  
>
>  
>  
>  
>
>  
>
>  
>  
>
>
>
>  
> style="document"/> 
>  
>
>
>  
>
>  
>  
> 
>
>
>
>
>
>
>  
>
>
>  
>http://localhost/fake_location"/>
>  
>
> 



-- 
J. Daniel Kulp
Principal Engineer, IONA
[EMAIL PROTECTED]
http://www.dankulp.com/blog


Re: Wsdl2java ignores soapAction?

2008-01-31 Thread James Mao
Better let us know the version of CXF you're using

James


On Jan 31, 2008 8:07 PM, Marco Piraccini <[EMAIL PROTECTED]> wrote:

> I tried to apply wsdl2java to the WSDL below. The WSDL operations
> defined are both referring to the same type element as input message,
> so the soap body are the same for both the messages. To solve this
> collision, i added the soapAction to the binding, but the wsdl2java
> seems to ignore it.
>
> The message returned by the tool is:
>
> WSDLToJava Error : Non unique body parts! In a port, operations must
> have unique operation signaure on the wire for successful dispatch. In
> port {urn:test}EchoTestPort, Operations "{urn:test}echoRequestB" and
> "{urn:test}echoRequestA" have the same request body block
> {urn:test}TRequestA
>
> That's correct (if no soapAction is defined), but in my opinion
> shouldn't be returned with the soapAction defined.
>
> Marco.
>
>  xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:ns1="http://test.it";
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";
> xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";
> xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/";
> xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding";
> xmlns:tns="urn:test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";
> xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"; targetNamespace="urn:test">
>   
>  elementFormDefault="qualified" targetNamespace="urn:test">
>
> 
>   
>  name="dataBoolean" nillable="false" type="xsd:boolean"/>
>   
> 
>
> 
>   
>  name="dataString" nillable="false" type="xsd:string"/>
>   
> 
>
> 
>   
> 
>name="typeA" nillable="false" type="tns:TypeA"/>
> 
>   
> 
> 
>   
> 
>name="typeB" nillable="false" type="tns:TypeB"/>
> 
>   
> 
>
> 
>   
> 
>type="tns:TypeA"/>
>type="tns:TypeB"/>
> 
>   
> 
>
>   
>   
>   
> 
> 
>   
>   
> 
> 
>   
>   
> 
> 
>   
>   
> 
>   
> 
>   
> 
> 
> 
>   
> 
>   
> 
> 
>   
>   
>
> 
>   
>   
> 
>   
>   
> 
>   
> 
> 
>  
>   
> 
>   
>   
> 
>   
> 
>   
>   
> 
>   http://localhost/fake_location"/>
> 
>   
> 
>
>
>


Wsdl2java ignores soapAction?

2008-01-31 Thread Marco Piraccini
I tried to apply wsdl2java to the WSDL below. The WSDL operations  
defined are both referring to the same type element as input message,  
so the soap body are the same for both the messages. To solve this  
collision, i added the soapAction to the binding, but the wsdl2java  
seems to ignore it.


The message returned by the tool is:

WSDLToJava Error : Non unique body parts! In a port, operations must  
have unique operation signaure on the wire for successful dispatch. In  
port {urn:test}EchoTestPort, Operations "{urn:test}echoRequestB" and  
"{urn:test}echoRequestA" have the same request body block  
{urn:test}TRequestA


That's correct (if no soapAction is defined), but in my opinion  
shouldn't be returned with the soapAction defined.


Marco.

xmlns="http://schemas.xmlsoap.org/wsdl/"; xmlns:ns1="http://test.it";  
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";  
xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";  
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope";  
xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/";  
xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding";  
xmlns:tns="urn:test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/";  
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/";  
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; targetNamespace="urn:test">

  
elementFormDefault="qualified" targetNamespace="urn:test">



  
name="dataBoolean" nillable="false" type="xsd:boolean"/>

  



  
name="dataString" nillable="false" type="xsd:string"/>

  



  

  name="typeA" nillable="false" type="tns:TypeA"/>


  


  

  name="typeB" nillable="false" type="tns:TypeB"/>


  



  

  type="tns:TypeA"/>
  type="tns:TypeB"/>


  


  
  
  


  
  


  
  


  
  

  

  



  

  


  
  


  
  

  
  

  


  
  
 
  
  
 
  

  
  

  http://localhost/fake_location"/>