RE: i009 - mustIgnore rule for multiple To, ReplyTo, etc.

Paul Downey writes:

> I'm assuming that a similar processing model also
> applies to SOAP 1.1, though i couldn't find that
> explicitly stated in the note or the WS-I Basic
> Profile.

Be a bit careful in what you assume :-), and also in equating SOAP 1.1 
with the WS-I BP.  One of the main reasons for having a SOAP 1.2 was that 
SOAP 1.1 was inappropriately (IMO) vague on such questions.  SOAP 1.2 
provides explicit rules on the order of mU checking where SOAP 1.1 did 
not.

I was not specifically involved in the development of the WS-I BP, but in 
many cases it applies to SOAP 1.1 clarifications that in fact were 
inspired by the SOAP 1.2 rules.  In this case, the WS-I basic profile says 
[1]:

 R1025   A RECEIVER MUST handle messages in such a way that it appears 
that all checking of mandatory header blocks is performed before any 
actual processing. [SOAP12]

Which seems to clearly indicate that the rule is enforced, and is indeed 
inspired by SOAP 1.2.  FWIW, I would prefer that SOAP 1.2 and the BP were 
a bit clearer on what I know was intended:  "For a node to 'understand' a 
header block that node must be prepared to process the header in a manner 
that fully conforms to whatever specifications were provided by the 
'owner' of the QName identifying the block.  Furthermore, where multiple 
header blocks appear in a single SOAP envelope, a node may be said to 
understand any subset of them if and only if their specifications, taken 
together provide for their correct processing in combination (and, as 
already stated, if the node is prepared to implement those 
specifications.)"

It is already clearly stated in SOAP 1.2, and I think implied in the BP, 
that header blocks can interact and affect each others' semantics and 
processing rules.  Taking all this together, you get what I said in my 
earlier note:

* You can invent header blocks that control order of processing for other 
header blocks
* You can include ordering semantics in the specification of header blocks 
that have other useful semantics (e.g. process all "BeginTransaction"s 
before the body, and process all "EndTransactions" after the body; process 
all wsa:ReplyTo's in document order, acting on the semantics of the first, 
and treating the others as no-ops."

Again, I'm not recommending an approach for wsa, but these are the 
building blocks given to you by SOAP, as I understand them.

Noah

[1] 
http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html#refinement16468312


--------------------------------------
Noah Mendelsohn 
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------

Received on Wednesday, 12 January 2005 23:53:51 UTC