{soap action} granularity

Comment on:

  Web Services Description Language (WSDL) Version 2.0 Part 2:
  Adjuncts
  http://www.w3.org/TR/2005/WD-wsdl20-adjuncts-20050803/

and:

  Web Services Description Language (WSDL) Version 2.0 SOAP 1.1
  Binding
  http://www.w3.org/TR/2005/WD-wsdl20-soap11-binding-20050803/

{soap action} is defined as a property of Binding Operation
component[4]:

     {soap action} OPTIONAL. A xs:anyURI, which is an absolute IRI as
     defined by [IETF RFC 3987], to the Binding Operation component.
     The value of this property identifies the value of the SOAP
     Action Feature (as defined for this specific operation), as
     specified in the binding rules of bindings to specific versions
     of SOAP (see 5.11.3 Default Binding Rules for the SOAP 1.2
     binding when the value of the {soap version} property of the
     Binding component is "1.2").

The SOAP 1.2 binding states[5]:

     SOAP Action Feature. If a value for the {soap action} property of
     a Binding Operation component has NOT been specified then the
     SOAP Action Feature (see [SOAP 1.2 Part 2: Adjuncts]) has NO
     value assigned by the Binding component. Otherwise, the value of
     the {soap action} property of a Binding Operation component is
     the value of the SOAP Action Feature for all messages of the
     corresponding Interface Operation component.

The SOAP 1.1 binding states[6]:

    The value of the {soap action} property identifies the value of
    the SOAP 1.1 SOAPAction HTTP request header field, Section 6.1.1,
    SOAP 1.1 specification [SOAP11].

I believe that this is the wrong granularity. The SOAPAction HTTP
header in SOAP 1.1[1] and the SOAP Action Feature in SOAP 1.2[2] are
properties of a message. It is unclear, as shown by WS-Addressing and
its wsa:Action[3] which has similar properties and motivations, that a
single action value can be applied to all the messages of an
operation in all cases.

I propose the following change: place {soap action} at the Binding
Message Reference, Binding Fault and Binding Fault Reference levels.

Editorially, I think the cleanest way is:
- remove the definition of {soap action} from section 5.8 Binding
  Operations
- add a subsection called "5.9 Assigning SOAP Action values to
  Messages" defining the {soap action} property on the Binding Message
  Reference, Binding Fault and Binding Fault Reference components
- say in the SOAP 1.2 binding that the value of {soap action} sets the
  value of the SOAP Action Feature of the corresponding SOAP message
  or fault
- say in the SOAP 1.1 binding that the value of {soap action} sets the
  value of the SOAPAction HTTP header for an HTTP Request; say that it
  MUST be ignored in other cases (it's not explicitly said right now)

As a related editorial side note, the SOAP 1.1 binding also says[7]:

    SOAP Action. If the Binding Operation component's {soap action}
    property has NOT been specified, then the Binding component
    assigns quoted string value to the SOAP 1.1 SOAPAction HTTP Header
    Field (see [SOAP11]).

I assume that "quoted string" means "an quoted empty string ("")". If
not, I don't know what it means. It should be clarified.

Cheers,

Hugo

  1. http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528
  2. http://www.w3.org/TR/2003/REC-soap12-part2-20030624/#ActionFeature
  3. http://www.w3.org/TR/2005/WD-ws-addr-wsdl-20050413/#explicitaction
  4. http://www.w3.org/TR/2005/WD-wsdl20-adjuncts-20050803/#property-BindingOperation.soapaction
  5. http://www.w3.org/TR/2005/WD-wsdl20-adjuncts-20050803/#soap12-defaults
  6. http://www.w3.org/TR/2005/WD-wsdl20-soap11-binding-20050803/#SOAP11
  7. http://www.w3.org/TR/2005/WD-wsdl20-soap11-binding-20050803/#soap11-defaults
-- 
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/

Received on Friday, 5 August 2005 13:27:10 UTC