Per my action item, here are two concrete proposals to address this issue in Section 3.1. The first generalizes the UsingAddressing element slightly to allow its reuse as a policy assertion (or any other framework that is based on QNamed elements):
WS-Addressing defines an empty global element, wsaw:UsingAddressing, that may be used to indicate that an endpoint conforms to the WS-Addressing specification in description languages or policy frameworks that use namespaced XML elements to indicate capabilities or requirements.
The wsaw:UsingAddressing element MAY appear as an extension element in a WSDL description. In this case, the wsdl:required attribute MAY be used to indicate whether WS-Addressing Message Addressing Properties are required in messages received from service requesters. Table 3-1 outlines the requirements on messages sent from an endpoint based on the contents of any preceding input message and how the use of addressing is indicated in the WSDL.
MAPs in Input message |
UsingAddressing Present |
UsingAddressing Not Present |
|
|
wsdl:required="true" |
wsdl:required="false" |
|
||
Yes, using SOAP headers with a soap:mustUnderstand value of "true" |
REQUIRED |
REQUIRED |
REQUIRED or fault |
|
Yes, using another protocol or using SOAP headers with a soap:mustUnderstand value of "false" |
REQUIRED |
REQUIRED |
OPTIONAL |
|
No |
Fault |
OPTIONAL. If using SOAP, MAP headers MUST NOT have a soap:mustUnderstand attribute with a value of "true" |
OPTIONAL. If using SOAP, MAP headers MUST NOT have a soap:mustUnderstand attribute with a value of "true" |
|
If WS-A is engaged, use of the message addressing properties MUST be fully compliant with this specification; in particular, senders MUST use all message addressing properties mandated by the Web Services Addressing 1.0 - Core[WS-Addressing-Core], applicable WS-Addressing protocol bindings (e.g. Web Services Addressing 1.0 - SOAP Binding[WS-Addressing-SOAP]), and this specification, and MUST follow all applicable WS-Addressing normative requirements.
The wsaw:UsingAddressing extension element SHOULD appear as a child of the wsdl:binding element. Alternatively, the wsaw:UsingAddressing extension 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 extension 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 extension element 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].
The presence of the wsaw:UsingAddressing extension element in the binding or endpoint (port) components of the endpoint description does not change the semantics of the binding. E.g. in the case of the WSDL SOAP/HTTP synchronous binding for request-response operations, the presence of the wsaw:UsingAddressing extension element does not change the requirement that the response message be sent over the same HTTP channel over which the request was received. In this case, the wsa:replyTo header in the request MUST NOT contain an address with a value different from the anonymous URI.
When the wsaw:UsingAddressing element is associated with WSDL constructs through means other than direct use as a WSDL extension (e.g. through a policy framework), the meaning of such association is semantically equivalent to the use of wsaw:UsingAddressing as a WSDL extension. Note that the association of wsaw:UsingAddressing to WSDL constructs where the wsaw:UsingAddressing WSDL extension element is not allowed is not meaningful.
Example 3-1. Indicating use of WS-Addressing using wsaw:UsingAddressing in WSDL 2.0
<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>
Example 3-2. Indicating use of WS-Addressing using wsaw:UsingAddressing in WSDL 1.1
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
<wsaw:UsingAddressing wsdl:required="true" />
<operation name="GetLastTradePrice">
<soap:operation soapaction="http://example.com/GetLastTradePrice" />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
Use of WS-Addressing adds the following REQUIRED properties to the WSDL 2.0 component model:
· A property of the binding or endpoint named {addressing required} of type xs:boolean. The property value is the value of the wsdl:required attribute information item on the wsaw:UsingAddressing extension element, if present; otherwise "false".
The second proposal is less general, and just specifically blesses the reuse in policy assertions (although still in a general way):
The wsaw:UsingAddressing element may also be used as a policy assertion in a policy framework that expresses assertions as namespaced elements. The meaning of such an assertion is semantically equivalent to the use of wsaw:UsingAddressing as a WSDL extension.
When the wsaw:UsingAddressing assertion is associated with WSDL constructs, the meaning of such association is semantically equivalent to the use of wsaw:UsingAddressing as a WSDL extension. Note that the association of wsaw:UsingAddressing to WSDL constructs where the wsaw:UsingAddressing WSDL extension element is not allowed is not meaningful.