I'm stuck in using SAAJ with Axis 1.1. When I try to add a child element to
the body, I get a ClassCastException. But when I add a soap fault and don't
add a child element, everything works fine.
Any suggestions?
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
try {
MessageFactory mf = MessageFactory.newInstance();
SOAPMessage message = mf.createMessage();
System.out.println("Attachments: " + message.countAttachments());
message.writeTo(System.out);
SOAPPart part = message.getSOAPPart();
SOAPEnvelope envelope = part.getEnvelope();
SOAPBody body = envelope.getBody();
body.addChildElement(envelope.createName("node")); // (*)
//body.addFault(); // (**)
message.writeTo(System.out);
} catch (Exception ex) {
ex.printStackTrace();
}
----
Attachments: 0
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body/>
</soapenv:Envelope>- java.io.IOException:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.lang.ClassCastException:
org.apache.axis.message.MessageElement
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace: java.lang.ClassCastException:
org.apache.axis.message.MessageElement
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:173)
at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:509)
at org.apache.axis.message.MessageElement.output(MessageElement.java:783)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:270)
at org.apache.axis.Message.writeTo(Message.java:440)
at com.rheinland.online.ws.TestAxis.main(TestAxis.java:34)
java.lang.ClassCastException: org.apache.axis.message.MessageElement
java.lang.ClassCastException: org.apache.axis.message.MessageElement
at org.apache.axis.message.SOAPBody.outputImpl(SOAPBody.java:173)
at org.apache.axis.message.SOAPEnvelope.outputImpl(SOAPEnvelope.java:509)
at org.apache.axis.message.MessageElement.output(MessageElement.java:783)
at org.apache.axis.SOAPPart.writeTo(SOAPPart.java:270)
at org.apache.axis.Message.writeTo(Message.java:440)
at com.rheinland.online.ws.TestAxis.main(TestAxis.java:34)