According to
http://docs.oracle.com/javaee/5/tutorial/doc/bnbhr.html
SOAPMessage message = messageFactory.createMessage();
SOAPHeader header = message.getSOAPHeader();
SOAPBody body = message.getSOAPBody();
Here is the XML it produces:
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
But my Implementation produces XML code like
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
without the <SOAP-ENV:Header/>
tag. I need the header tag explicitly even if it is empty. How can I produce such XML.
Here is my code
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage message = messageFactory.createMessage();
SOAPHeader header = message.getSOAPHeader();
marshaller.marshal(someObject, message.getSOAPBody());
message.saveChanges();
return message; //save it as request. for printing in logs
I use
ByteArrayOutputStream in = new ByteArrayOutputStream();
request.writeTo(in);
logger.debug("Sending: " + in);
to print it on my console.