- From: David Orchard <dorchard@bea.com>
- Date: Thu, 3 Nov 2005 17:22:26 -0800
- To: <public-ws-addressing@w3.org>
- Message-ID: <32D5845A745BFB429CBDBADA57CD41AF14276692@ussjex01.amer.bea.com>
I propose a wsaw:UsingAddressing element with a wsaw:Async and wsaw:ResponseBinding attributes that uses an abstract protocol (aka uber) MEP to show the relationship between wsdl request-response and protocol level request-response without mentioning a specific protocol. There are 9 examples including protocol switch and reverse bindings, so everybody should be happy. 3.1 UsingAddressing Extension Element WS-Addressing defines an empty global element, wsaw:UsingAddressing, that may be used to indicate that an endpoint conforms to the WS-Addressing specification. The wsdl:required attribute MAY be used to indicate whether WS-Addressing Message Addressing Properties are required in messages received from service requesters. A wsaw:UsingAddressing element with a wsdl:required attribute whose value is "true" indicates that messages exchanged with the endpoint MUST contain WS-Addressing Message Addressing Properties. A wsaw:UsingAddressing element with a wsdl:required attribute whose value is "false" indicates that the endpoint will accept input messages with or without WS-Addressing header blocks, and MAY generate output messages containing WS-Addressing headers. If a SOAP binding is used and WS-Addressing header blocks are not present in an input message then WS-Addressing header blocks encoded in the corresponding output message MUST NOT be required to be understood using the SOAP mustUnderstand mechanism. The wsaw:UsingAddressing element SHOULD appear as a child of the wsdl:binding element. Alternatively, the wsaw:UsingAddressing element MAY instead be included as a child of the wsdl20:endpoint (or wsdl11:port) when an endpoint intends to indicate compliance with WS-Addressing for a specific endpoint only. The inclusion of the wsaw:UsingAddressing element indicates that the applicable WS-Addressing specifications are supported within the constraints of the WSDL binding being used. That is, uses of the WS-Addressing specifications that may violate or are inconsistent with the semantics of the endpoint's WSDL binding are not supported unless explicitly stated by some other mechanism. Specifically, when included in a SOAP binding, the wsaw:UsingAddressing marker identifies the use of Web Services Addressing 1.0 bound to SOAP as defined by Web Services Addressing 1.0 - SOAP Binding[WS-Addressing-SOAP <http://dev.w3.org/cvsweb/~checkout~/2004/ws/addressing/ws-addr-wsdl.htm l?content-type=text/html;%20charset=utf-8#WSADDR-SOAP#WSADDR-SOAP> ]. (Note to reader: Up to this point, this is exactly the same text from the current editor's draft. It does need a titch of updating as it isn't an empty global element. 3.1.1 wsaw:Async attribute WS-Addressing defines an attribute, wsaw:Async, that may be used in conjunction with wsaw:UsingAddressing element. This attribute MAY be used only when wsaw:UsingAddressing element is present. The wsaw:Async attribute may have three distinct values, "full", "never" and "always". If the wsaw:Async attribute is not present, then a value of "full" is the default. * The "full" value indicates that either one or two protocol message exchange pattern (proposed in [1] request-optional-response MEP or in [2] as SOAP-request MEP) instances is used to transmit the request and response. When wsaw:Async attribute has this value, then the response message MAY be the response part (aka http://www.w3.org/2004/12/ws-addr/mep/ResponseMessage or http://www.w3.org/2003/05/soap/mep/InboundMessage) of a request-optional-response or request-response MEP or the response message MAY be the request part (aka http://www.w3.org/2004/12/ws-addr/mep/RequestMessage or http://www.w3.org/2003/05/soap/mep/OutboundMessage) of a separate request-optional response or request MEP. When the value of the [reply endpoint] in the request message contains the anonymous URI as the address, the response MUST be sent as the response part of the request-optional-response MEP. When the value of [reply endpoint] contains an address that is different than the anonymous URI, the response MUST the request part of a separate request-optional response MEP with a binding using the destination address value specified by [reply endpoint]. * The "never" value indicates that a single protocol MEP is in use. When wsaw:Async attribute has this value, [reply endpoint]/[fault endpoint] EPRs in the request MUST NOT contain an address with a value different from the anonymous URI. If [reply endpoint]/[fault endpoint] EPRs do not contain the anonymous address value, then a predefined InvalidAddressingHeader fault defined in Section 5.4.1.7 of defined by Web Services Addressing 1.0 - SOAP Binding[WS-Addressing-SOAP <http://dev.w3.org/cvsweb/~checkout~/2004/ws/addressing/ws-addr-wsdl.htm l?content-type=text/html;%20charset=utf-8#WSADDR-SOAP#WSADDR-SOAP> ] MUST be generated (See Section 3 B for the definition of this new fault). * The "always" value of the wsaw:Async attribute indicates that a separate request-optional-response MEP for sending response messages. When wsaw:Async attribute has this value, [reply endpoint]/[fault endpoint] EPR in the request MUST NOT contain an address with a value that is the same as the anonymous URI. 3.1.2 wsaw:ResponseBinding attribute WS-Addressing defines an attribute, wsaw:ResponseBinding, that may be used in conjunction with wsaw:UsingAddressing element. This attribute MAY be used only when wsaw:UsingAddressing element is present. The wsaw:ResponseBinding attribute is a list of URIs of bindings that may be specified for any asynchronous response. If the wsaw:ResponseBinding is not present, and the wsaw:Async attribute is not "never", then the default value is the value of the binding within which the wsaw:UsingAddressing element appears. It is an error if the ResponseBinding contains a value and if the wsaw:Async attribute is "never". A sender of a request message SHOULD use the ResponseBinding value when creating [reply endpoint] values. 3.1.3 SOAP HTTP Binding extensions The wsaw:UsingAddressing inside soap:binding elements extends the SOAP/HTTP Bindings in a few specific ways. Case: WSDL in-out (or request-response) and SOAP 1.1 and non-anonymous [reply endpoint] is specified. The first HTTP connection MUST have a status code of 202 and the response message MUST contain an empty SOAP body. The actual response MUST be sent using a separate HTTP connection using the address value of the response message specified by [reply endpoint]. Case: WSDL in-out (or request-response) and SOAP 1.2 and non-anonymous [reply endpoint] is specified. Each of the two request-optional-response MEPs be sent using a separate instance of the @@TBD SOAP 1.2 one-way binding@@. 3.1.4 Examples These examples are an update to the async scenarios listed in [3]. As described therein, the identifier for the mythical one-way protocol is "http://www.openuri.org/mythical-oneway/soap/" Example 3-1. Indicating Sync or Async in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" 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="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> Example 3-2. Indicating Sync or Async in WS-Addressing using wsaw:UsingAddressing in WSDL 1.1 <binding name="ServiceBinding" type="s0:ServicePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsaw:UsingAddressing wsdl:required="true" /> <operation name="EchoString"> <soap:operation soapaction="EchoString" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output> </operation> </binding> Example 3-3. Indicating Sync in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsaw:Async="never" wsdl:required="true" /> <operation ref="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> Example 3-4. Indicating Async in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsaw:Async="always" wsdl:required="true" /> <operation ref="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> Example 3-5. Indicating Async with Mythical Oneway Binding in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsaw:Async="always" wsdl:required="true" ResponseBinding="http://www.openuri.org/mythical-oneway/soap/" /> <operation ref="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> Example 3-6. Indicating Async with HTTP or Mythical Binding in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsaw:Async="always" wsdl:required="true" ResponseBinding="http://www.w3.org/2003/05/soap/bindings/HTTP http://www.openuri.org/mythical-oneway/soap/" /> <operation ref="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> Example 3-7. Indicating Sync or Async with HTTP or Mythical Binding in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsaw:Async="full" wsdl:required="true" ResponseBinding="http://www.w3.org/2003/05/soap/bindings/HTTP http://www.openuri.org/mythical-oneway/soap/" /> <operation ref="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> Example 3-8. Indicating Async in Interface in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <interface name="ServiceInterface"> <wsaw:UsingAddressing wsaw:Async="always" wsdl:required="true" /> <operation name="EchoString" pattern="http://www.w3.org/@@@@/@@/wsdl/in-out"> <input element="s0:EchoStringMessageIn"/> <output element="s0:EchoStringMessageOut"/> </operation> </interface> The above is only a possibility. It would require updating the usingAddressing to say what it means if a child of interface, and it would require changes to disallowResponseBindings. Alternatively, the async attribute could be made an element for inclusion as a child of interface. Example 3-9. Indicating PAOS Async in WS-Addressing using wsaw:UsingAddressing in WSDL 2.0 <binding name="ServiceBinding" interface="s0:ServiceInterface" type="http://www.w3.org/2005/08/wsdl/soap12" wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP"> <wsaw:UsingAddressing wsaw:Async="always" wsdl:required="true" /> <paos:reverseBinding wsdl:required="true"/> <operation ref="s0:EchoString" wsoap:mep="http://www.w3.org/2003/05/soap/mep/request-response" /> </binding> The paos:reverseBinding would have to say something akin to : "In the first protocol MEP, put the paos:Get value in the Action MAP and generate a full paos Get request including other MAPs. The first protocol MEP response must contain the binding operation's request. The response may have a [reply endpoint]. The second protocol MEP request must contain the binding operation's response and be sent to any [reply endpoint]. " Cheers, Dave [1] http://lists.w3.org/Archives/Public/public-ws-addressing/2005Jul/att-001 0/ws-addr-soapadjuncts-simplemeps_httpbinding.html [2] http://lists.w3.org/Archives/Public/public-ws-addressing/2004Dec/att-015 9/WS-Addressing-SOAP-Adjuncts.html [3] http://www.pacificspirit.com/Authoring/async/async-scenarios.html
Received on Friday, 4 November 2005 01:22:34 UTC