- From: Hugo Haas <hugo@w3.org>
- Date: Fri, 18 Feb 2005 16:43:08 +0100
- To: Glen Daniels <gdaniels@sonicsoftware.com>
- Cc: public-ws-addressing@w3.org
- Message-ID: <20050218154308.GD10971@w3.org>
* Glen Daniels <gdaniels@sonicsoftware.com> [2005-02-04 07:55-0500] > At the F2F in Melbourne, we got into a discussion of issue 7 (processing > model for WSA SOAP headers) which resulted in some new > thoughts/questions. I took an action to facilitate moving the > conversation forward, and as such this email will bring out some of the > points I believe we covered in the conversation there, and hopefully > encourage further discussion. > > The issue involves the processing model for the WSA SOAP headers, and > there has already been a great thread about this beginning at [1]. > > The first part of this involves the specification of just what a node > should do when processing the WSA headers in a received message. I > believe we should at a minimum specify (which we don't quite at present) > that processing the WSA headers has the result of filling in the > abstract message properties appropriately at the processing node. Actually, the SOAP binding is currently not really defined in terms of binding abstract message properties. The SOAP binding is written in terms of binding of EPRs (section 2. Binding Endpoint References[0]) and has text which looks like taken from reply rules: The SOAP binding for endpoint references is defined by the following three rules: * The [address] property in the endpoint reference is copied in the [destination] message information property. The infoset representation of the [destination] property becomes a header block in the SOAP message. * Each [reference parameter] element becomes a header block in the SOAP message. The element information item of each [reference parameter] (including all of its [children], [attributes] and [in-scope namespaces]) is to be added as a header block in the new message. * Each header block added as a result of the above rule is annotated with a wsa:Type attribute whose value is "parameter". AFAICT, nowhere is explained in the binding how to bind the rest of the message addressing properties, which is actually what we want to bind. The binding concentrates on [destination] and [reference parameters], leaving out all the others. And as you say, this only concentrates on the sending of a SOAP message, not the receiving of one. I would propose making the 4 changes to address the first part of your issue: 1. Define the following as the first rule of the SOAP binding when _sending_ a message: 1. All the message addressing properties are serialized as SOAP header blocks using their XML Infoset representation defined in Core section 3.1 XML Infoset Representation of Message Addressing Properties[2]. This covers and completes the first of the three rules currently expressed. The two others are about the serialization of reference parameters. Note: as part of the resolution of issue i044, we should have added [reference parameters] as a message addressing property. I am saying "should" here as I proposed it as part of the resolution (see my note at the end of [3]) and I realized that it wasn't explicit in my final email[4] though I'm using it in the proposed text. So, my proposed resolution for i044 which was accepted relied on [reference parameters] being a message addressing property, which I'll use here too. I think that we will need to Core's section 3.1 their XML Infoset representation. Therefore, to complete the addition of [reference parameters] started in issue i044, I further propose to: 2. Make the [reference parameters] message addressing property's XML Infoset representation in Core's section 3.1 the following, which was the second rule of the SOAP binding: /[reference parameters]* Each element information item of found in [reference parameters] (including all of its [children], [attributes] and [in-scope namespaces]) is represented as is. I struggled with how to express this one the right way, so the text may be improved. 3. Add the following second rule to the SOAP binding of the MAPs when sending a message: 2. Each SOAP header block resulting from a [reference parameters] is annotated with a wsa:Type attribute whose value is "parameter". Another way to go around this would be to simply have the wsa:Type annotation be part of section 3.1 in the core and limit the SOAP binding to rule 1 above. I'm ambivalent on this. 4. Add the following rules when _receiving_ a SOAP message: 1. The value of each message addressing property takes the value from the corresponding SOAP header block in the wsa namespace which matches the XML Infoset representation described in Core section 3.1. 2. Each SOAP header block annotated with a wsa:Type attribute whose value is "parameter" is added to the content of the [reference parameters] MAP. Again, if the wsa:Type annotation is part of the core, then rule 2 goes away. Comments? Cheers, Hugo 0. http://www.w3.org/TR/2005/WD-ws-addr-soap-20050215/#_Toc77464317 2. http://www.w3.org/TR/2005/WD-ws-addr-core-20050215/#_Toc77464323 3. http://lists.w3.org/Archives/Public/public-ws-addressing/2005Feb/0004.html 4. http://lists.w3.org/Archives/Public/public-ws-addressing/2005Feb/0091.html -- Hugo Haas - W3C mailto:hugo@w3.org - http://www.w3.org/People/Hugo/
Received on Friday, 18 February 2005 15:43:09 UTC