- 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