SOAP binding: Action and Message-Id

while updating a SOAP 1.2 script, I've been wondering about the relation
between SOAP/Addressing and the SOAP transport protocol binding. I'd
like some input before opening any issue. A little bit of angle brackets
shouldn't hurt anyone, so here is an example of an experimental SOAP
email being generated:

From: CVS Update Notifier
To: Mirrors
Content-Type: application/soap+xml;action=http://www.w3.org/2004/09/DirectoryUpdate
Subject: Mirror update
Message-Id: <20050215190310.10C08D69C9@localhost>
Date: Tue, 15 Feb 2005 19:03:10 +0000 (GMT)

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
            xmlns="http:/www.w3.org/2004/09/mirror"
            xmlns:wsa="http://www.w3.org/2005/02/addressing">
  <s:Header>
    <wsa:To s:mustUnderstand="true">http://www.w3.org/2005/02</wsa:To>
    <wsa:From>
      <wsa:Address>file://main/u/jigsaw/CVSTREE/WWW/2005/02</wsa:Address>
    </wsa:From>
    <wsa:Action>http://www.w3.org/2004/09/DirectoryUpdate</wsa:Action>
  </s:Header>
  <s:Body>
    <mirror timestamp="2005-02-15T19:03:11Z" user="anonymous">
      <resource action='modified'>15-addressing.html</resource>
      <message>Updated the Addressing namespace. Made absolute URIs.</message>
    </mirror>
  </s:Body>
</s:Envelope>

2 points on this message:
- the SOAP action parameter value is duplicated, both in the addressing
and content-type headers.
- the message-id information appears at the SMTP level, but not at the
SOAP level (since the message-id header is generated by the sendmail
daemon in this case).

One way to prevent duplication would be to require every addressing
properties to be contained in the Addressing headers, but this doesn't
help here since Message-Id is only obtained at the transport protocol
layer. I could certainly remove the action parameter in the Content-Type
header but I would wonder about the use of the action parameter in the
application/soap+xml media type.
One way out would be to indicate that action and message-id must be
present either in the SOAP Addressing headers or in the transport
protocol (and if duplicated, they must be equivalent).

Thoughts (including on other issue with the example)?

Philippe

Received on Tuesday, 15 February 2005 19:56:02 UTC