- From: Anish Karmarkar <Anish.Karmarkar@oracle.com>
- Date: Mon, 10 Oct 2005 13:48:47 -0700
- 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? 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).</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" > <jmarsh@microsoft.com></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, <public-ws-addressing@w3.org></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. 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.</FONT> <BR><FONT face=Tahoma color=blue > size=2> </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> </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 > <peter.hendry@capeclear.com></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> </FONT> > <P><BR> > <TABLE width="100%"> > <TBODY> > <TR vAlign=top> > <TD width="50%"><FONT face="Times New Roman" size=3> </FONT> > <TD width="49%"><FONT face="Times New Roman" > size=3> </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? > </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><binding name="StockQuoteSoapBinding" > type="tns:StockQuotePortType"></FONT><FONT face="Times New Roman" size=3> > </FONT><FONT face=sans-serif size=2><BR><</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> /></FONT><FONT face="Times New Roman" size=3> > </FONT><FONT face=sans-serif size=2><BR><wsaw:UsingAddressing > wsdl:required="true" /></FONT><FONT face="Times New Roman" size=3> > </FONT><FONT face=sans-serif size=2><BR><operation > name="GetLastTradePrice"></FONT><FONT face="Times New Roman" size=3> > </FONT><FONT face=sans-serif size=2><BR> <</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> /></FONT><FONT face="Times New Roman" size=3> > </FONT><FONT face=sans-serif size=2><BR> <input> <BR> > <</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" > /></FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=sans-serif > size=2><BR> </input> <BR> <output></FONT><FONT > face="Times New Roman" size=3> </FONT><FONT face=sans-serif size=2><BR> > <</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" > /></FONT><FONT face="Times New Roman" size=3> </FONT><FONT face=sans-serif > size=2><BR> </output></FONT><FONT face="Times New Roman" size=3> > </FONT><FONT face=sans-serif size=2><BR></operation></FONT><FONT > face="Times New Roman" size=3> </FONT><FONT face=sans-serif > size=2><BR></binding></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 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.</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 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>==>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. > <==</FONT><FONT face="Times New Roman" size=3> > </FONT><BR></P></BLOCKQUOTE></BODY></HTML> >
Received on Monday, 10 October 2005 20:50:23 UTC