- From: Katy Warr <katy_warr@uk.ibm.com>
- Date: Tue, 4 Oct 2005 21:38:20 +0100
- To: public-ws-addressing@w3.org
- Message-ID: <OF6F7462C5.C2E3A435-ON80257090.006FAE6C-80257090.00715FDC@uk.ibm.com>
What is the correct behaviour for gen'ing wsa:Action in the client when
the HTTP 1.1 SOAPAction is set ( i.e. not "") and there is no wsaw:Action
explicitly specified in the WSDL?
The problem is that, the default action pattern for wsa:Action cannot be
gauranteed to generate a wsa:action to match SOAPAction.
Here is an example to illustrate:
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document" transport="
http://schemas.xmlsoap.org/soap/http" />
<wsaw:UsingAddressing wsdl:required="true" />
<operation name="GetLastTradePrice">
<soap:operation soapAction="http://example.com/GetLastTradePrice" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
If we use the default action pattern to generate the wsa:Action, this is
the result for the input operation
http://example.com/StockQuotePortType/GetLastTradePriceInput
As this is not the same as the SOAPAction, this will cause
non-compliance. The WSDL in this case is implicitly inconsistent with the
wsa spec - a problem which will occur in every existing WSDL 1.1 in which
the values of SOAPAction have not been constructed according to the
default action pattern.
A possible solution is to set the wsa:Action header to SOAPAction (if
SOAPAction =! "") in preference to using the default action pattern (if
the wsa:Action is not specified explicitly).
This would means a change something like this in the wsdl spec:
4.3 Default Action Pattern for WSDL 1.1
In the absence of the wsa:Action attribute....
==>When using the SOAP 1.1 HTTP binding, if the SOAPAction is set, the
action for inputs and outputs MUST be the same as this and the default
action pattern is not used. <==
thanks
Katy
Received on Tuesday, 4 October 2005 20:38:38 UTC