- From: Springer, Ian P. <ian.springer@hp.com>
- Date: Tue, 11 Oct 2005 18:27:10 -0400
- To: "Anish Karmarkar" <Anish.Karmarkar@oracle.com>, "Katy Warr" <katy_warr@uk.ibm.com>
- Cc: "Jonathan Marsh" <jmarsh@microsoft.com>, <public-ws-addressing@w3.org>
Upon further investigation, it looks like SOAPAction is required to be a URI by SOAP 1.1 (http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528) and SOAP 1.2 (http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#ietf-action). More specifically, SOAP 1.1 says it should be a URI-reference [1], and SOAP 1.2 says it should be an absolute-URI-reference [2]. In the WSDL 1.1 schema, the soapAction attribute is defined with type xsd:uriReference (similar to xsd:anyURI except that all non-safe characters must be hex-encoded [3]). Since xsd:anyURI value space is a superset of the xsd:uriReference value space, it's legitimate to say wsa:Action must have the same value as the soapAction attribute, if present. So, I apologize for the false alarm. For the record, I agree with Anish that WSA should not make this a MUST requirement. As far as a WSA-enabled server or client is concerned, the value of SOAPAction should be of no significance. Yes, the SOAP 1.1 client would need to include a SOAPAction simply to comply with the SOAP 1.1 spec, but they may as well always set it to "", since the server should completely ignore it anyway. In fact, I think WSA should consider instead saying something like: It is recommended that for an addressing-enabled WSDL binding that the enclosed soap:operation elements do not include soapAction attributes. If soapAction attributes are included, it is recommended that they be set to "". This emphasizes that the SOAPAction header is insignificant and obsolete for WSA-enabled services, though it still need be included to comply with the SOAP 1.1 spec. [1] URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ] [2] absolute-URI-reference = [ absoluteURI ] [ "#" fragment ] [3] http://www.w3.org/2000/12/xmlschema-crcomments.html#pfiIURI | -----Original Message----- | From: Anish Karmarkar [mailto:Anish.Karmarkar@oracle.com] | Sent: Tuesday, October 11, 2005 3:42 PM | To: Katy Warr | Cc: Springer, Ian P.; Jonathan Marsh; public-ws-addressing@w3.org | Subject: Re: New Issue: What to do when SOAPAction and | Default Action Pattern conflict? | | All this is making me rethink as to whether we made the right | decision wrt to requiring the [action] value to be same as | SOAPAction (or empty). | It seems to me that instead of a MUST perhaps we need to have | a SHOULD (or a recommendation). All of this of course depends | on whether it requires us to go back to LC. | | -Anish | -- | | Katy Warr wrote: | > | > Ian, Anish | > I agree that this is a good point that I hadn't considered in the | > original email. The first problem that we need to solve is | what the | > correct WSA behaviour is when the SOAPAction is not a valid URI. | > Thanks | > Katy | > | > | > *Anish Karmarkar <Anish.Karmarkar@oracle.com>* | > | > 10/10/2005 21:48 | > | > | > To | > "Springer, Ian P." <ian.springer@hp.com> cc | > Katy Warr/UK/IBM@IBMGB, Jonathan Marsh <jmarsh@microsoft.com>, | > public-ws-addressing@w3.org Subject | > Re: New Issue: What to do when SOAPAction and Default | Action Pattern | > conflict? it | > | > | > | > | > | > | > | > | > 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/GetLastTradePriceI | nput"><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 Tuesday, 11 October 2005 22:27:50 UTC