W3C home > Mailing lists > Public > public-ws-addressing@w3.org > October 2005

Re: New Issue: What to do when SOAPAction and Default Action Pattern conflict? it

From: Anish Karmarkar <Anish.Karmarkar@oracle.com>
Date: Mon, 10 Oct 2005 13:48:47 -0700
Message-ID: <434AD3AF.9040602@oracle.com>
To: "Springer, Ian P." <ian.springer@hp.com>
CC: Katy Warr <katy_warr@uk.ibm.com>, Jonathan Marsh <jmarsh@microsoft.com>, public-ws-addressing@w3.org

Ian,

Good point. But this is a problem regardless of Katy's suggestion. 
Currently the specs says that either SOAPAction and wsa:Action should be 
the same or SOAPAction should be empty. If SOAPAction is not a valid URI 
(in WSDL), then the message either cannot conform to WSA 1.0 or cannot 
conform to the WSDL SOAP binding.

-Anish
--

Springer, Ian P. wrote:
> What about the case where soapAction is not a valid URI? Using it as the
> default value for wsaw:Action, you end with an invalid wsa:Action (i.e.
> that is not a valid xsd:anyURI).
> 
> 
> ________________________________
> 
> 	From: public-ws-addressing-request@w3.org
> [mailto:public-ws-addressing-request@w3.org] On Behalf Of Katy Warr
> 	Sent: Monday, October 10, 2005 4:06 PM
> 	To: Jonathan Marsh; public-ws-addressing@w3.org
> 	Subject: RE: New Issue: What to do when SOAPAction and Default
> Action Pattern conflict? it
> 	
> 	
> 
> 	Jonathan 
> 	I don't think it's sufficient because: 
> 	- Folk may not wish/be in a position to refresh their WSDL with
> the wsaw:Action 
> 	- Why mandate the duplication of the same piece of information
> in the service description when we can deduce it? 
> 	I don't think that this complicates things - for users of
> WS-Addressing it should make things easier. 
> 	Katy 
> 	
> 	
> 	
> 	
> "Jonathan Marsh" <jmarsh@microsoft.com> 
> 
> 10/10/2005 18:46 
> 
> To
> Katy Warr/UK/IBM@IBMGB, <public-ws-addressing@w3.org> 
> cc
> Subject
> RE: New Issue: What to do when SOAPAction and Default Action Pattern
> conflict? it
> 
> 	
> 
> 
> 
> 
> 	The currently available solution is to add wsaw:Action
> explicitly whenever you have a soapAction.  Isn't that a sufficient
> answer?  Perhaps we could simply remind people of this solution.
> Complicating our action defaulting algorithm further (by making it
> depend on information in another namespace) seems to me to likely be
> more confusing in the long run. 
> 	  
> 
> ________________________________
> 
> 
> 	From: public-ws-addressing-request@w3.org
> [mailto:public-ws-addressing-request@w3.org] On Behalf Of Katy Warr
> 	Sent: Monday, October 10, 2005 8:57 AM
> 	To: public-ws-addressing@w3.org
> 	Subject: New Issue: What to do when SOAPAction and Default
> Action Pattern conflict? 
> 	  
> 	
> 	I'd like to raise this as an issue. thanks 
> 	
> 	----- Forwarded by Katy Warr/UK/IBM on 10/10/2005 16:56 ----- 
> 
> 	
> Pete Hendry <peter.hendry@capeclear.com> 
> Sent by: public-ws-addressing-request@w3.org 
> 
> 08/10/2005 04:58 
> 
> 
> 
> To
> Katy Warr/UK/IBM@IBMGB 
> cc
> public-ws-addressing@w3.org 
> Subject
> Re: What to do when SOAPAction and Default Action Pattern conflict?
> 
>   
> 
> 
> 
>   	 
> 
> 
> 
> 	
> 	
> 	
> 	We have already seen this problem where the requirement is to
> take an already existing service and allow asynchronous calls against
> request-response operations (actually, we already did async in a
> proprietary config-file type way and now want to use WS-Addressing to
> achieve the same thing with old WSDLs).
> 	
> 	I would agree with Katy that defaulting the input wsa:Action to
> the SOAPAction if present would solve this problem. The output and fault
> actions could keep their current defaults (I assume it is only the input
> wsa:Action that has to match SOAPAction).
> 	
> 	Pete
> 	
> 	
> 	Katy Warr wrote: 
> 	
> 	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 <soap:binding>  style="document"
> transport="http://schemas.xmlsoap.org/soap/http"
> <http://schemas.xmlsoap.org/soap/http>  /> 
> 	<wsaw:UsingAddressing wsdl:required="true" /> 
> 	<operation name="GetLastTradePrice"> 
> 	  <soap:operation <soap:operation>
> soapAction="http://example.com/GetLastTradePrice"
> <http://example.com/GetLastTradePrice>  /> 
> 	  <input> 
> 	    <soap:body <soap:body>  use="literal" /> 
> 	  </input> 
> 	  <output> 
> 	    <soap:body <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
> <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. <== 
> 	
> 
> 
> ent-Type: text/html;
> 	charset="us-ascii"
> Content-Transfer-Encoding: quoted-printable
> 
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <HTML><HEAD>
> <META http-equiv=Content-Type content="text/html; charset=us-ascii">
> <META content="MSHTML 6.00.2900.2722" name=GENERATOR></HEAD>
> <BODY>
> <DIV dir=ltr align=left><SPAN class=747291120-10102005><FONT face=Arial 
> color=#0000ff size=2>What about the case where soapAction is not a valid 
> URI?&nbsp;Using it as the default value for wsaw:Action, you end with an 
> invalid&nbsp;wsa:Action (i.e. that is not a valid 
> xsd:anyURI).</FONT></SPAN></DIV><BR>
> <BLOCKQUOTE dir=ltr 
> style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
>   <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
>   <HR tabIndex=-1>
>   <FONT face=Tahoma size=2><B>From:</B> public-ws-addressing-request@w3.org 
>   [mailto:public-ws-addressing-request@w3.org] <B>On Behalf Of </B>Katy 
>   Warr<BR><B>Sent:</B> Monday, October 10, 2005 4:06 PM<BR><B>To:</B> Jonathan 
>   Marsh; public-ws-addressing@w3.org<BR><B>Subject:</B> RE: New Issue: What to 
>   do when SOAPAction and Default Action Pattern conflict? 
> it<BR></FONT><BR></DIV>
>   <DIV></DIV><BR><FONT face=sans-serif size=2>Jonathan</FONT> <BR><FONT 
>   face=sans-serif size=2>I don't think it's sufficient because:</FONT> <BR><FONT 
>   face=sans-serif size=2>- Folk may not wish/be in a position to refresh their 
>   WSDL with the wsaw:Action</FONT> <BR><FONT face=sans-serif size=2>- Why 
>   mandate the duplication of the same piece of information in the service 
>   description when we can deduce it?</FONT> <BR><FONT face=sans-serif size=2>I 
>   don't think that this complicates things - for users of WS-Addressing it 
>   should make things easier. </FONT><BR><FONT face=sans-serif size=2>Katy</FONT> 
>   <BR><BR><BR><BR>
>   <TABLE width="100%">
>     <TBODY>
>     <TR vAlign=top>
>       <TD width="40%"><FONT face=sans-serif size=1><B>"Jonathan Marsh" 
>         &lt;jmarsh@microsoft.com&gt;</B> </FONT>
>         <P><FONT face=sans-serif size=1>10/10/2005 18:46</FONT> </P>
>       <TD width="59%">
>         <TABLE width="100%">
>           <TBODY>
>           <TR>
>             <TD>
>               <DIV align=right><FONT face=sans-serif size=1>To</FONT></DIV>
>             <TD vAlign=top><FONT face=sans-serif size=1>Katy 
>               Warr/UK/IBM@IBMGB, &lt;public-ws-addressing@w3.org&gt;</FONT> 
>           <TR>
>             <TD>
>               <DIV align=right><FONT face=sans-serif size=1>cc</FONT></DIV>
>             <TD vAlign=top>
>           <TR>
>             <TD>
>               <DIV align=right><FONT face=sans-serif size=1>Subject</FONT></DIV>
>             <TD vAlign=top><FONT face=sans-serif size=1>RE: New Issue: What to 
>               do when SOAPAction and Default Action Pattern conflict? 
>           it</FONT></TR></TBODY></TABLE><BR>
>         <TABLE>
>           <TBODY>
>           <TR vAlign=top>
>             <TD>
>             <TD></TR></TBODY></TABLE><BR></TR></TBODY></TABLE><BR><BR><BR><FONT 
>   face=Tahoma color=blue size=2>The currently available solution is to add 
>   wsaw:Action explicitly whenever you have a soapAction. &nbsp;Isn&#8217;t that a 
>   sufficient answer? &nbsp;Perhaps we could simply remind people of this 
>   solution. &nbsp;Complicating our action defaulting algorithm further (by 
>   making it depend on information in another namespace) seems to me to likely be 
>   more confusing in the long run.</FONT> <BR><FONT face=Tahoma color=blue 
>   size=2>&nbsp;</FONT> 
>   <DIV align=center><BR>
>   <HR>
>   </DIV><BR><FONT face=Tahoma size=2><B>From:</B> 
>   public-ws-addressing-request@w3.org 
>   [mailto:public-ws-addressing-request@w3.org] <B>On Behalf Of </B>Katy 
>   Warr<B><BR>Sent:</B> Monday, October 10, 2005 8:57 AM<B><BR>To:</B> 
>   public-ws-addressing@w3.org<B><BR>Subject:</B> New Issue: What to do when 
>   SOAPAction and Default Action Pattern conflict?</FONT> <BR><FONT 
>   face="Times New Roman" size=3>&nbsp;</FONT> <BR><FONT face=sans-serif 
>   size=2><BR>I'd like to raise this as an issue. thanks</FONT><FONT 
>   face="Times New Roman" size=3> <BR></FONT><FONT face=sans-serif color=#800080 
>   size=1><BR>----- Forwarded by Katy Warr/UK/IBM on 10/10/2005 16:56 
>   -----</FONT><FONT face="Times New Roman" size=3> </FONT>
>   <P>
>   <TABLE width="100%">
>     <TBODY>
>     <TR vAlign=top>
>       <TD width="40%"><FONT face=sans-serif size=1><B>Pete Hendry 
>         &lt;peter.hendry@capeclear.com&gt;</B> <BR>Sent by: 
>         public-ws-addressing-request@w3.org</FONT><FONT face="Times New Roman" 
>         size=3> </FONT>
>         <P><FONT face=sans-serif size=1>08/10/2005 04:58</FONT><FONT 
>         face="Times New Roman" size=3> </FONT></P>
>       <TD width="59%"><BR>
>         <TABLE width="100%">
>           <TBODY>
>           <TR>
>             <TD width="12%">
>               <DIV align=right><FONT face=sans-serif size=1>To</FONT></DIV>
>             <TD vAlign=top width="87%"><FONT face=sans-serif size=1>Katy 
>               Warr/UK/IBM@IBMGB</FONT><FONT face="Times New Roman" size=3> 
>               </FONT>
>           <TR>
>             <TD>
>               <DIV align=right><FONT face=sans-serif size=1>cc</FONT></DIV>
>             <TD vAlign=top><FONT face=sans-serif 
>               size=1>public-ws-addressing@w3.org</FONT><FONT 
>               face="Times New Roman" size=3> </FONT>
>           <TR>
>             <TD>
>               <DIV align=right><FONT face=sans-serif size=1>Subject</FONT></DIV>
>             <TD vAlign=top><FONT face=sans-serif size=1>Re: What to do when 
>               SOAPAction and Default Action Pattern 
>         conflict?</FONT></TR></TBODY></TABLE><BR><FONT face="Times New Roman" 
>         size=3>&nbsp;</FONT> 
>         <P><BR>
>         <TABLE width="100%">
>           <TBODY>
>           <TR vAlign=top>
>             <TD width="50%"><FONT face="Times New Roman" size=3>&nbsp;</FONT> 
>             <TD width="49%"><FONT face="Times New Roman" 
>           size=3>&nbsp;</FONT></TR></TBODY></TABLE><BR></P></TR></TBODY></TABLE><BR><FONT 
>   face="Times New Roman" size=3><BR><BR><BR>We have already seen this problem 
>   where the requirement is to take an already existing service and allow 
>   asynchronous calls against request-response operations (actually, we already 
>   did async in a proprietary config-file type way and now want to use 
>   WS-Addressing to achieve the same thing with old WSDLs).<BR><BR>I would agree 
>   with Katy that defaulting the input wsa:Action to the SOAPAction if present 
>   would solve this problem. The output and fault actions could keep their 
>   current defaults (I assume it is only the input wsa:Action that has to match 
>   SOAPAction).<BR><BR>Pete<BR><BR><BR>Katy Warr wrote: </FONT><FONT 
>   face=sans-serif size=2><BR><BR>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? 
>   &nbsp;</FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR><BR>The problem is that, the default action pattern for wsa:Action 
>   cannot be gauranteed to generate a wsa:action to match SOAPAction.</FONT><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR><BR>Here is an example to illustrate:</FONT><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR><BR>&lt;binding name="StockQuoteSoapBinding" 
>   type="tns:StockQuotePortType"&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR>&lt;</FONT><A 
>   href="soap:binding"><FONT face=sans-serif color=blue 
>   size=2><U>soap:binding</U></FONT></A><FONT face=sans-serif size=2> 
>   style="document" transport=</FONT><A 
>   href="http://schemas.xmlsoap.org/soap/http"><FONT face=sans-serif color=blue 
>   size=2><U>"http://schemas.xmlsoap.org/soap/http"</U></FONT></A><FONT 
>   face=sans-serif size=2> /&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR>&lt;wsaw:UsingAddressing 
>   wsdl:required="true" /&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR>&lt;operation 
>   name="GetLastTradePrice"&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR>&nbsp; &lt;</FONT><A 
>   href="soap:operation"><FONT face=sans-serif color=blue 
>   size=2><U>soap:operation</U></FONT></A><FONT face=sans-serif size=2> 
>   soapAction=</FONT><A href="http://example.com/GetLastTradePrice"><FONT 
>   face=sans-serif color=blue 
>   size=2><U>"http://example.com/GetLastTradePrice"</U></FONT></A><FONT 
>   face=sans-serif size=2> /&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR>&nbsp; &lt;input&gt; <BR>&nbsp; &nbsp; 
>   &lt;</FONT><A href="soap:body"><FONT face=sans-serif color=blue 
>   size=2><U>soap:body</U></FONT></A><FONT face=sans-serif size=2> use="literal" 
>   /&gt;</FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR>&nbsp; &lt;/input&gt; <BR>&nbsp; &lt;output&gt;</FONT><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif size=2><BR>&nbsp; 
>   &nbsp; &lt;</FONT><A href="soap:body"><FONT face=sans-serif color=blue 
>   size=2><U>soap:body</U></FONT></A><FONT face=sans-serif size=2> use="literal" 
>   /&gt;</FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR>&nbsp; &lt;/output&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR>&lt;/operation&gt;</FONT><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR>&lt;/binding&gt;</FONT><FONT face="Times New Roman" size=3> 
>   </FONT><FONT face=sans-serif size=2><BR><BR>If we use the default action 
>   pattern to generate the wsa:Action, this is the result for the input 
>   operation</FONT><FONT face="Times New Roman" size=3> </FONT><FONT 
>   face="Times New Roman" color=blue size=3><U><BR></U></FONT><A 
>   href="http://example.com/StockQuotePortType/GetLastTradePriceInput"><FONT 
>   face=sans-serif color=blue 
>   size=2><U>http://example.com/StockQuotePortType/GetLastTradePriceInput</U></FONT></A><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif size=2><BR>As this 
>   is not &nbsp;the same as the SOAPAction, this will cause non-compliance. 
>   &nbsp;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.</FONT><FONT face="Times New Roman" size=3> </FONT><FONT 
>   face=sans-serif size=2><BR><BR>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).</FONT><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR><BR>This would means a change something like this in the wsdl 
>   spec:</FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=sans-serif 
>   size=2><BR><BR>4.3 Default Action &nbsp;Pattern for WSDL 1.1</FONT><FONT 
>   face="Times New Roman" size=3> </FONT><FONT face=sans-serif size=2><BR>In the 
>   absence of the wsa:Action attribute....</FONT><FONT face="Times New Roman" 
>   size=3> </FONT><FONT face=sans-serif size=2><BR>==&gt;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. 
>   &lt;==</FONT><FONT face="Times New Roman" size=3> 
> </FONT><BR></P></BLOCKQUOTE></BODY></HTML>
> 
Received on Monday, 10 October 2005 20:50:23 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:35:09 GMT