Handles a received SOAP message
// Convert the message to string representation
// and log it.
try {
message.writeTo(os);
log("Received SOAP message:\n" + os.toString());
os.reset();
// Create a copy of the message with the same body
// and with the to and from addresses exchanged.
EbXMLMessageImpl soapMsg = (EbXMLMessageImpl)message;
// Create a reply message
EbXMLMessageImpl replyMsg = (EbXMLMessageImpl)messageFactory.createMessage();
// Move the body content from the received message to the source.
SOAPBody body = soapMsg.getSOAPPart().getEnvelope().getBody();
SOAPBody replyBody = replyMsg.getSOAPPart().getEnvelope().getBody();
Iterator iter = body.getChildElements();
while (iter.hasNext()) {
SOAPElement element = (SOAPElement)iter.next();
replyBody.addChildElement(element);
}
// Add an element after the body that contains the date.
SOAPElement element =
replyMsg.getSOAPPart().getEnvelope().addChildElement("Date", "tns", "urn:ebXMLEcho");
element.addTextNode(new Date().toString());
// Copy any attachments
iter = soapMsg.getAttachments();
while (iter.hasNext()) {
replyMsg.addAttachmentPart((AttachmentPart)iter.next());
}
// Get the message ID and install it as the "RefToMessageId" value
replyMsg.setRefToMessageId(soapMsg.getMessageId());
// Get the the "Reciever" address and install it as the "Sender" address
replyMsg.setSender(soapMsg.getReceiver());
// Get the "Sender" address an install it as the "Receiver" address
replyMsg.setReceiver(soapMsg.getSender());
// Copy values from the ebXML MessageHeader
replyMsg.setAction(soapMsg.getAction());
replyMsg.setConversationId(soapMsg.getConversationId());
replyMsg.setCPAId(soapMsg.getCPAId());
replyMsg.setManifest(soapMsg.getManifest());
replyMsg.setMessageHeaderVersion(soapMsg.getMessageHeaderVersion());
replyMsg.setService(soapMsg.getService());
// Send the reply message
conn.send(replyMsg);
} catch (Exception ex) {
log("Exception", ex);
}