- From: David Hull <dmh@tibco.com>
- Date: Wed, 28 Sep 2005 15:07:03 -0400
- To: "public-ws-addressing@w3.org" <public-ws-addressing@w3.org>
- Message-id: <433AE9D7.2050201@tibco.com>
>From the discussion of wsa:UsingAddressing, wsdl:required and so forth, it appears that there is some ambiguity as to how to define the set of MAPs present in an incoming SOAP message. Indeed, section 2 of the SOAP binding deals solely with the outbound side, defining how MAPs become headers, but not vice versa. The infoset description in section 3.1 of the core provides most of the needed information, but there is at least one gray area: Since wsa:To is given a default value, it is possible to define the [destination] property of a message which contains no wsa:Headers in its infoset. This in turn appears to complicate the handling of messages received by an endpoint whose wsa:UsingAddressing property is present but with wsdl:required = false. Essentially, the receiver must be able to distinguish two cases, ideally without explicit reference to SOAP-level concepts such as header blocks: 1. wsa: SOAP headers were present, and therefore the endpoint should follow the full WSA rules (in particular, it MUST fault if required headers are absent) 2. No wsa:SOAP headers were present, and therefore the endpoint handles the message without regard to WSA. To my knowledge, there are at least two possible resolutions to this: 1. (my preference). Explicitly state that the MAPs for a SOAP message are defined as per section 3.1 of the core, but with the exception that a SOAP message with no wsa:headers present in its infoset has /no/ MAPs defined. I.e., [destination] does not assume its default value. Non-SOAP bindings would similarly define their own mappings from messages to MAPs. 2. Explicitly state that the MAPs for a SOAP message are defined as per section 3.1, including unconditional defaulting of [destination]. In addition, introduce a "WSA engaged" flag indicating whether the message was intended as a WSA message. This could be set based on whether any wsa:headers were present in the infoset, or on any other basis. Non-SOAP bindings would similarly define their own mappings from messages to MAPs and the "WSA engaged" flag. Note that in either case, wire-level optimizations are not an issue. We consider a SOAP message as its infoset, regardless of how that infoset was serialized and deserialized.
Received on Wednesday, 28 September 2005 19:07:43 UTC