So org.apache.axis.message.SOAPHeader
implements javax.xml.soap.SOAPHeader
but keeps the addHeaderElement(QName)
method abstract.
When using this implementation then, I had to use the addHeaderElement(javax.xml.soap.Name)
method instead.
The final working code is below:
SOAPMessage soapMessage = soapContext.getMessage();
SOAPEnvelope soapEnvelope = soapMessage.getSOAPPart().getEnvelope();
SOAPHeader soapHeader = soapEnvelope.getHeader();
/* If no header, add one */
if (soapHeader == null) {
soapHeader = soapEnvelope.addHeader();
}
/* Add a soap header, name as AUTH_ID_KEY */
Name name = soapEnvelope.createName(AUTH_ID_KEY);
SOAPHeaderElement soapHeaderElement = soapHeader.addHeaderElement(name);
soapHeaderElement.addTextNode(authId);
soapMessage.saveChanges();