You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Adrian Dick (JIRA)" <ax...@ws.apache.org> on 2004/12/20 17:18:18 UTC

[jira] Created: (AXISCPP-336) Incorrect use of SoapAction for handlers

Incorrect use of SoapAction for handlers
----------------------------------------

         Key: AXISCPP-336
         URL: http://nagoya.apache.org/jira/browse/AXISCPP-336
     Project: Axis-C++
        Type: Bug
  Components: WSDD Processing  
    Versions: current (nightly), 1.4 Final    
    Reporter: Adrian Dick


When using Handlers, the name is taken from the SOAP Action, rather than the service name (as used to be the case).  However, this is not good practice as SOAP Action is optional.

I've taken a look at what the SOAP (v1.1) and WSDL (v1.1) specs have to say about SOAPAction (see snippets below).
Based on my interpretation of these, I do not believe it is correct for us to build a SOAPAction, when none (or blank) is specified in the WSDL.
If the WSDL specifies a SOAPAction, then we should use that.  If the application developer has additional information to the WSDL, they can set the SOAP action programmatically, via the Stub API.

Obviously, this still leaves the problem with handlers.  I suggest we base handlers off the WSDL service names.

As an aside, there has been mention that .NET servers require SOAP Action be set.  It is my belief that this is merely a requirement that WSDLs to .NET servers include the SOAP action rather than our client having to generate a SOAP Action "on the fly".


Extract from SOAP (v1.1) spec
6.1.1 The SOAPAction HTTP Header Field
   The SOAPAction HTTP request header field can be used to indicate the 
   intent of the SOAP HTTP request.  The value is a URI identifying the
   intent.  SOAP places no restrictions on the format or specificity of the
   URI or that it is resolvable.  An HTTP client MUST use this header field
   when issuing a SOAP HTTP Request.

   soapaction    =  "SOAPAction" ":" [ <"> URI-reference <"> ]
   URI-reference =  <as defined in RFC 2396 [4]>
      (from RFC2396, 4. URI References   [absoluteURI | relativeURI ] [ "#"
      fragment ] )

   The presence and content of the SOAPAction header field can be used by
   servers such as firewalls to appropriately filter SOAP request messages
   in HTTP.  The header field value of empty string ("") means the intent
   of the SOAP is provided by the HTTP Request-URI.  No value means that
   there is no indication of the intent of the message.

   Examples:_____________________________________________
   SOAPAction: "http://electrocommerce.org/abc#MyMessage"
   SOAPAction: "myapp.sdl"
   SOAPAction: ""
   SOAPAction:

Extract from WSDL (v1.1) spec
   3.4 soap:operation
   <definitions .....>
     <binding ....>
       <operation ....>
         <soap:operation soapAction="uri"? style="rpc|document"?>?
       </operation>
       </binding>
   </definitions>
   ...
   The soapAction attribute specifies the value of the SOAPAction header
   for this operation.  This URI value should be used directly as the
   values for the SOAP-Action header; no attempt should be made to make a
   relative URI value absolute whan making the request.  For the HTTP
   protocol binding of SOAP, this is value required (it has no default).
   For other SOAP protocol bindings, it MUST NOT be specified, and the
   soap:operation element MAY be omitted.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://nagoya.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira