Hi,
    While using RI SAAJ impl with Axis2, it seems that RI SAAJ will always
adds a SOAPAction header with the value "" if it is a SOAP 1.1 message. I
found that if the action is configured in the requestContext by the
BindingProvider.SOAPACTION_USE_PROPERTY and
BindingProvider.SOAPACTION_URI_PROPERTY will be ignored. And it looks to me
that it makes sense to override the soap action if it is explicitly
configured with the later way.
    I did a text search for the setSOAPAction method for the MessageContext,
and its initial values are from SOAPMessage.
    a. o.a.axis2.saaj.SOAPConnectionImpl     Line 185
    b. o.a.axis2.jaxws.message.util.MessageUtils Line 206
    Also, for the SOAPAction in the OperationClient, it is configured in
o.a.axis2.jaxws.core.control.impl.AxisInvocationController.initOperationClient
method
    --->
    String soapAction = ClientUtils.findSOAPAction(requestMsgCtx);
   <---
   The codes in the ClientUtils.findSOAPAction will check the configurations
in the RequestContext, and even the action configured in the Operation, it
looks to me that the SOAPAction here is more valuable.

   The proposed the changes are in the OperationClient.prepareMessageContext
   From
   --->
  if (mc.getSoapAction() == null || "".equals(mc.getSoapAction())) {
            mc.setSoapAction(options.getAction());
   }
   <---
   To
    if (options.getAction() != null || options.getAction().length() > 0) {
            mc.setSoapAction(options.getAction());
        }
    <---
    Thoughts ?
Thanks.
-- 
Ivan

Reply via email to