AxisFault: What does Server.userException mean?

ryanprayogo picture ryanprayogo · Sep 30, 2010 · Viewed 59.3k times · Source

What does the following AxisFault mean?

Does it mean that:

  • The request that is issued and received by the server and the server throws an (uncaught) exception, and therefore the exception is returned back to the client.

or

  • My web app fails to create the SOAP request (so the request is not even sent from the client app)

NB. I'm new to web services

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1c) was found in the element content of the document.
 faultActor:
 faultNode:
 faultDetail:
        {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x1c) was found in the element content of the document.
        at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
        at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
        at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
        at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
        at org.apache.xerces.impl.XMLScanner.reportFatalError(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.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
        at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
        at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
        at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)

Answer

user159088 picture user159088 · Oct 1, 2010

If your application is respecting the extensibility of the SOAP fault codes, then it means that your server received a SOAP message but was unable to parse it.

The invalid XML character (Unicode: 0x1c) was found in the element content of the document message should be a good indicator of what's wrong.

Your server is throwing an exception, which Axis sends to the client as a SOAP Fault. The faultCode indicates a Server error. Note that the Server.userException error code is not a standard value, it just is a more specific type of server fault code.

The default SOAP faultcode values are defined in an extensible manner that allows for new SOAP faultcode values to be defined. The mechanism uses a dot (.) to define more specific types of errors. It indicates that what is to the left of the dot is a more generic fault code value than the value to the right. See the specs here.

So I guess that Server.userException is a pertinent way of saying that the exception occured at the server but is not something strictly related to the server but related to what the client sent (.userException). At least that is what I think the authors had in mind. This is for you to discover :D.