When the service is on document mode, the component receiving a soap envelop must:
1-search the soap action into the payload
2a-if it's found, it must search the operation with the soap action matching the soap action of the payload
2b-if it's not found, or the wsdl haven't this soap action, the root element must be used to search the operation with the content ("message" on wsdl 1.x) matching (name attribute).
Today, the soapAction is always used:
// Retrieve message operation and service
final String soapAction = inContext.getWSAAction(); -->This get retrieve the string ""
[...]
if (soapAction != null ) { -->always true!
bindingOperation = WsdlHelper.findOperationUsingSoapAction(soapAction, desc);
}
We often see binding operation with an empty soap action (I don't know why, it's not a mandatory attribute. It's maybe because the WS-I samples have got its soapAction=""). So, in this case (that is my case of course), the bc-soap always choose...the first operation.
I think it's itsself a minor bug: we can remove the soapAction="" into the wsdl. But sometimes, we're not allowed to change the wsdl: so it's a major bug for me
.