title: wso2 esb proxy service wsa:Action header invalid
body: <p>I wish to start using WSO2 ESB to allow manipulation of requests which occur between two 3rd party products.</p>
  
  <p>I cannot change the calling client. I cannot change the web service.</p>
  
  <p>The client is sending a request with a SOAP header which is deemed invalid by the ESB. The web service accepts the call directly from the client. It is not passing through the ESB, I see just the request come into the ESB and a reply go back to the client without the ESB calling out to the endpoint. A debug trace reveals that a handler decides that the action tag included in the header does not conform to the required standard.</p>
  
  <pre><code>TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.context.MessageContext} -  SoapAction is () {org.apache.axis2.context.MessageContext}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.builder.BuilderUtil} -  char set encoding set from default =UTF-8 {org.apache.axis2.builder.BuilderUtil}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.handlers.addressing.AddressingInHandler} -  No headers present corresponding to http://www.w3.org/2005/08/addressing {org.apache.axis2.handlers.addressing.AddressingInHandler}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.handlers.addressing.AddressingInHandler} -  http://schemas.xmlsoap.org/ws/2004/08/addressing headers present in the SOAP message. Starting to process ... {org.apache.axis2.handlers.addressing.AddressingInHandler}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.client.Options} -  getAction () from org.apache.axis2.client.Options@53781b2c {org.apache.axis2.client.Options}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.handlers.addressing.AddressingInHandler} -  The wsa:Action header is present but its contents are empty.  This violates rules in the WS-A specification.  The SOAP node that sent this message must be changed. {org.apache.axis2.handlers.addressing.AddressingInHandler}
  TID: [0] [ESB] [2014-12-24 10:51:06,481]  WARN {org.apache.axis2.addressing.AddressingFaultsHelper} -  triggerActionNotSupportedFault: messageContext: [MessageContext: logID=d241a239ecfe36148a4f055b69d082a8d2b599e9cd6d6ba7] problemAction:  {org.apache.axis2.addressing.AddressingFaultsHelper}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] DEBUG {org.apache.axis2.i18n.ProjectResourceBundle} -  org.apache.axis2.addressing.i18n.resource::handleGetObject(spec.FAULT_ACTION_NOT_SUPPORTED_REASON) {org.apache.axis2.i18n.ProjectResourceBundle}
  TID: [0] [ESB] [2014-12-24 10:51:06,481] ERROR {org.apache.synapse.transport.passthru.util.RelaySecuirtyMessageBuilderDispatchandler} -  Error while executing the message at relaySecurity handler {org.apache.synapse.transport.passthru.util.RelaySecuirtyMessageBuilderDispatchandler}
  org.apache.axis2.AxisFault: The [action] cannot be processed at the receiver.
      at org.apache.axis2.addressing.AddressingFaultsHelper.triggerAddressingFault(AddressingFaultsHelper.java:373)
      at org.apache.axis2.addressing.AddressingFaultsHelper.triggerActionNotSupportedFault(AddressingFaultsHelper.java:336)
      at org.apache.axis2.handlers.addressing.AddressingInHandler.extractActionInformation(AddressingInHandler.java:539)
      at org.apache.axis2.handlers.addressing.AddressingInHandler.extractAddressingInformation(AddressingInHandler.java:249)
  </code></pre>
  
  <p>The request created by the client has the following header </p>
  
  <pre><code>&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
    &lt;soap:Header&gt;
      &lt;wsa:Action/&gt;
      &lt;wsa:MessageID&gt;urn:uuid:926dbf87-1f59-4fff-b1e9-341286567f8c&lt;/wsa:MessageID&gt;
      &lt;wsa:ReplyTo&gt;
        &lt;wsa:Address&gt;http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous&lt;/wsa:Address&gt;
      &lt;/wsa:ReplyTo&gt;
      &lt;wsa:To&gt;http://blahblahblah:8280/services/PassTrhuProxy1&lt;/wsa:To&gt;
    &lt;/soap:Header&gt;
    &lt;soap:Body&gt;
    ...
    &lt;/soap:Body&gt;
  &lt;/soap:Envelope&gt;
  </code></pre>
  
  <p>We have done some testing by creating requests in SOAPUI, if we create one with a header like shown below, we can get a proper response from the service.</p>
  
  <pre><code> &lt;soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"&gt;
  </code></pre>
  
  <p>I have no idea how to make the ESB pass the message to the service. Is there a way?</p>
  
  <p>I wonder
  1. Is there a way for me to make the WSO2 ESB ignore the validation error so that I can get the message into the mediators so I can manipulate them?
  2. Is there a way to turn off the validation completely?
  3. Can WSO2 ESB be setup to handle this scenario out of the box? Source code change needed?</p>
  
  <p>Thanks for considering my question....</p>