- From: Marc Hadley <Marc.Hadley@Sun.COM>
- Date: Tue, 01 Nov 2005 17:46:27 -0500
- To: public-ws-addressing@w3.org
- Message-id: <D1503191-88CA-4537-A20A-1F891F43606D@Sun.COM>
In fulfillment of my action item from this weeks telcon, below is an alternate proposal for issue 59 that is not SOAP/HTTP specific and supports alternate bindings for async responses. Most of the requirements and considerations detailed in the prior proposal[2] still apply and for brevity I have not duplicated them here. Marc. [1] http://www.w3.org/2002/ws/addr/wd-issues/#i059 [2] http://www.w3.org/mid/ 2BA6015847F82645A9BB31C7F9D6416556A801@uspale20.pal.sap.corp ---8<--- The wsaw:UsingAddressing element is extended with a boolean attribute called "asyncOnly". When false, the endpoint can support either synchronous or asynchronous usage; when true the endpoint can only support asynchronous use. The default value of asyncOnly is false. Asynchronous capabilities are declared using a new wsaw:Async element as described below. A new element, wsaw:Async, is used to declare asynchronous capabilities. The element is empty with a single optional attribute called 'binding'. The binding attribute is of type xs:QName and is used to refer to a WSDL binding of the same interface/port type to a protocol. Omission of the attribute is equivalent to its inclusion with a value that refers to the same binding for which the asynchronous capabilities are being declared. Some examples (for ease of comparison, I only include examples that show UsingAddressing in a WSDL 2.0 binding but the intent is that this could also be used in an endpoint, operation or the WSDL 1.1 equivalents): (i) A sync-only binding <binding name="reservationSOAPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsdl:required="true" /> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> (ii) A sync/async binding where the operation responses can either be sent over the HTTP response or using a separate HTTP request <binding name="reservationSOAPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsdl:required="true"> <wsaw:Async/> </wsaw:UsingAddressing> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> (iii) An async-only binding where the operation response is always sent over a separate HTTP connection <binding name="reservationSOAPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing asyncOnly="true" wsdl:required="true"> <wsaw:Async/> </wsaw:UsingAddressing> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> (vi) An async-only SOAP/HTTP binding where the operation responses are sent in an email. I made up the http://www.w3.org/2003/05/soap/ bindings/SMTP protocol identifier as an example. <binding name="reservationSOAPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing asyncOnly="true" wsdl:required="true"> <wsaw:Async binding="tns:reservationSOAPSMTPBinding"/> </wsaw:UsingAddressing> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> <binding name="reservationSOAPSMTPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/SMTP"> <wsaw:UsingAddressing wsdl:required="true"/> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> (v) A sync/async SOAP/HTTP binding where the operation responses can either be sent over the HTTP response, using a separate HTTP request, or in an email. I made up the http://www.w3.org/2003/05/soap/bindings/ SMTP protocol identifier as an example. <binding name="reservationSOAPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsdl:required="true"> <wsaw:Async/> <wsaw:Async binding="tns:reservationSOAPSMTPBinding"/> </wsaw:UsingAddressing> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> <binding name="reservationSOAPSMTPBinding" interface="tns:reservationInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/SMTP"> <wsaw:UsingAddressing wsdl:required="true"/> <operation ref="tns:opCheckAvailability" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request- response" /> <fault ref="tns:invalidDataFault" wsoap:code="soap:Sender" /> </binding> The above covers declaration of asynchronous support at the endpoint or binding granularity. It may also be desirable to support such declaration at the operation level though I'm not convinced that it makes sense to extend such granularity to the UsingAddressing element itself. To declare async support at the operation level I'd propose to allow the UsingAddressing element to be used at the WSDL operation level with the following semantics: (a) The value of the UsingAddressing/@asyncOnly specified at the binding or port level is overidden by the value of the UsingAddressing/@asyncOnly specified at the operation level (b) The child wsaw:Async elements of the UsingAddressing specified at the operation level are added to the child wsaw:Async elements of the UsingAddressing specified at the binding or port level. --- Marc Hadley <marc.hadley at sun.com> Business Alliances, CTO Office, Sun Microsystems.
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Tuesday, 1 November 2005 22:45:51 UTC