Loading ...
Sorry, an error occurred while loading the content.

Problem deserializing SOAP::Faults in Java (Axis)

Expand Messages
  • pfconrey
    I am developing a Java client application, using classes auto-generated by WSDL2Java, that makes requests to a Perl web service. All of the service requests
    Message 1 of 1 , May 24, 2006
    • 0 Attachment
      I am developing a Java client application, using classes
      auto-generated by WSDL2Java, that makes requests to a Perl web
      service. All of the service requests work fine unless the service
      returns a SOAP fault. In all cases, the fault causes the following
      error on the client:

      [DEBUG][org.apache.axis.transport.http.HTTPSender]:
      org.xml.sax.SAXParseException: Comment must start with "<!--".

      Looking at the log, this error appears immediately after:

      [DEBUG][org.apache.axis.encoding.DeserializationContext]: Enter:
      DeserializationContext::endPrefixMapping(soapenv)
      [DEBUG][org.apache.axis.encoding.DeserializationContext]: Exit:
      DeserializationContext::endPrefixMapping()

      Here is the actual soap fault returned from the Perl web service:

      500 (Internal Server Error)
      Content-Length: 532
      Content-Type: text/xml
      SOAPServer: SOAP::Lite/Perl/0.600.0

      <?xml version="1.0" encoding="UTF-8"?>
      <soapenv:Envelope
      xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

      soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema"

      xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Body>
      <soapenv:Fault>
      <faultcode>soapenv:Server</faultcode>
      <faultstring>
      Error getting guest information
      from property system
      </faultstring>
      </soapenv:Fault>
      </soapenv:Body>
      </soapenv:Envelope>

      Unfortunately, I have not been able to reproduce this issue in an
      isolated case. Parsing the above xml through the SAXParser class in a
      simple test application is successful. I am completely stumped, and
      I've found no trace of documentation about this issue anywhere. Any
      help you can provide would be greatly appreciated.

      Here is the stack trace at the point of the error, if it is helpful in
      any way:

      org.xml.sax.SAXParseException: Comment must start with "<!--".
      at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
      at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
      at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
      at
      org.apache.axis.transport.http.HTTPSender.readFromSocket(HTTPSender.java:796)
      at
      org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:144)
      at
      org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
      at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
      at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
      at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
      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)
      at
      com.hilton.crm.gpm.ws.BestGuests.BestGuestsBindingStub.runReport(BestGuestsBindingStub.java:481)
      at
      hilton.bestguests.controllers.ManageTemplateController.handleRequestInternal(ManageTemplateController.java:83)
      at
      org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:128)
      at
      org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
      at
      org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
      at
      org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
      at
      org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:386)
      at
      org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:355)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
      at
      org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      at
      org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at
      org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      at
      org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      at
      org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at
      org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at
      org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at
      org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at
      org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
      at
      org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
      at
      org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at
      org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
      at
      org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
      at java.lang.Thread.run(Thread.java:595)

      Caused by: org.xml.sax.SAXParseException: Comment must start with "<!--".
      at
      com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
      at
      com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)
      at
      com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)
      at
      com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
      at
      com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1438)
      at
      com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:1298)
      at
      com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
      at
      com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
      at
      com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
      at
      com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
      at
      com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
      at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
      at
      org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
      at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
      ... 36 more

      Does anyone have any idea how to property return faults to a Java
      client? This same code works correctly for a .NET client.
    Your message has been successfully submitted and would be delivered to recipients shortly.