// provide logging
private static Logger log = Logger.getLogger(SOAPBindingJAXRPC.class);
public void setSOAPActionHeader(OperationMetaData opMetaData, SOAPMessage reqMessage)
{
MessageContextJAXRPC msgContext = (MessageContextJAXRPC)MessageContextAssociation.peekMessageContext();
MimeHeaders mimeHeaders = reqMessage.getMimeHeaders();
String soapAction = opMetaData.getSOAPAction();
// R2744 A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field
// with a quoted value equal to the value of the soapAction attribute of
// soapbind:operation, if present in the corresponding WSDL description.
// R2745 A HTTP request MESSAGE MUST contain a SOAPAction HTTP header field
// with a quoted empty string value, if in the corresponding WSDL description,
// the soapAction attribute of soapbind:operation is either not present, or
// present with an empty string as its value.
if (msgContext.getProperty(Call.SOAPACTION_USE_PROPERTY) != null)
log.info("Ignore Call.SOAPACTION_USE_PROPERTY because of BP-1.0 R2745, R2745");
String soapActionProperty = (String)msgContext.getProperty(Call.SOAPACTION_URI_PROPERTY);
if (soapActionProperty != null)
soapAction = soapActionProperty;
mimeHeaders.addHeader("SOAPAction", soapAction != null ? soapAction : "");
}