| Author |
AXIS and DOM exception
|
Stephen Campbell
Greenhorn
Joined: Dec 12, 2005
Posts: 2
|
|
I have implemented a web service (consumer) with AXIS 1.3, running on WAS 5.1. If everything goes right, the WS works, If I get an error condition though, SAX throws a exception What I send is this (names in capitals are dummy) <?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:Header> <ns1:Security xmlns="http://schemas.xmlsoap.org/ws/2002/04/secext" soapenv:actor="" soapenv:mustUnderstand="0" xmlns:ns1="http://schemas.xmlsoap.org/ws/2002/04/secext"> <ns1:BinarySecurityToken>A VALID BST (Checked via another method)</ns1:BinarySecurityToken> </ns1:Security> </soapenv:Header> <soapenv:Body> <WS_SRVC xmlns="http://www.MY DUMMY DOMAIN/XML/Schema"> <context> <ID>DUMMY ID</ID> </context> <QUERY_ID> <MY_TYPE> <ID>DUMMY ID</ID> <ANOTHER_ID>DUMMY ID</ANOTHER_ID> <service_called>Y</service_called> </MY_TYPE> </QUERY_ID> </WS_SRVC> </soapenv:Body> </soapenv:Envelope> the (non-working) response I get is below. The whole enchilada comes apart in the AXIS DeserializationContext.Parse method; the call to parser.parse throws a SAX exception faultString: org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it. The actual SOAP message returned is this <?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soapenv:Header/> <soapenv:Body> <soapenv:Fault> <faultcode>soapenv:Sender</faultcode> <faultstring>Could not locate environment for object id.</faultstring> <detail>A service was requested for a supplied DUMMY ID. This customer does not exist.</detail> </soapenv:Fault> </soapenv:Body> </soapenv:Envelope> The problematic code is /** * Create a parser and parse the inputSource */ public void parse() throws SAXException { if (inputSource != null) { SAXParser parser = XMLUtils.getSAXParser(); try { parser.setProperty("http://xml.org/sax/properties/lexical-handler", this); parser.parse(inputSource, this); //BLAMMO! ~~snip Has anybody come across this error and its resolution?
|
 |
Stephen Campbell
Greenhorn
Joined: Dec 12, 2005
Posts: 2
|
|
I should add, the stack trace is faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it. faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace rg.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one that created it. at java.lang.Throwable.<init>(Throwable.java) at java.lang.Throwable.<init>(Throwable.java) at org.w3c.dom.DOMException.<init>(Unknown Source) at org.apache.xerces.dom.ParentNode.internalInsertBefore(Unknown Source) at org.apache.xerces.dom.ParentNode.insertBefore(Unknown Source) at org.apache.xerces.dom.NodeImpl.appendChild(Unknown Source) at org.apache.axis.message.SOAPFaultBuilder.onEndChild(SOAPFaultBuilder.java:305) at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1090) at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812)
|
 |
 |
|
|
subject: AXIS and DOM exception
|
|
|