http://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html:
Следующая строка является пустой заголовок SOAP. Вы можете удалить его, вызвав header.detachNode после вызова getSOAPHeader.
Так вот решение в простом SAAJ:
MessageFactory messageFactory = MessageFactory.newInstance("SOAP 1.2 Protocol");
SOAPMessage message = messageFactory.createMessage();
message.getSOAPHeader().detachNode(); // suppress empty header
А вот решение с использованием пружинного-WS WebServiceMessageCallback, основанный на this thread:
public void marshalWithSoapActionHeader(MyObject o) {
webServiceTemplate.marshalSendAndReceive(o, new WebServiceMessageCallback() {
public void doWithMessage(WebServiceMessage message) {
SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPHeader header = soapMessage.getSOAPHeader();
header.detachNode();
}
});
}