In case of failure each called method adds an entry to my exception list.
The exception list is passed to the SOAP client. But the content can not be
resolved ("#id0", see TCPMonitor trace below).
I called the registerTypeMapping method for the WdcServerException and the
ExceptionData.
The exception is caught correctly, but there is no data (exception list)
inside.
try {
call.invoke( new Object[] { } );
}
catch (Homag.WoodCommander.WDC_Server.Soap.WdcServerException e) {
...
}
It seems to me that the #id0 can not be resolved because only the subtree
of <ns1:fault> is parsed
(org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument is
called).
How can I get the exception list on the client side with axis?
Here is the TCPMonitor trace:
HTTP/1.1 500 Internal Server Error
Set-Cookie: JSESSIONID=99B7D8C731BB8C96D44048294B7C74F0; Path=/axis
Content-Type: text/xml; charset=utf-8
Date: Wed, 26 Mar 2003 09:05:40 GMT
Server: Apache Coyote/1.0
Connection: close
<?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:Fault>
<faultcode>soapenv:Server.generalException</faultcode>
<faultstring></faultstring>
<detail>
<ns1:fault href="#id0" xmlns:ns1="urn:WDC_ServerSoap"/>
<ns2:exceptionName xmlns:ns2
="http://xml.apache.org/axis/">Homag.WoodCommander.WDC_Server.Soap.WdcServerException</ns2:exceptionName>
<ns3:stackTrace xmlns:ns3="http://xml.apache.org/axis/">AxisFault
faultCode:
{http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString:
faultActor: null
faultNode: null
faultDetail:
exceptionName: Homag.WoodCommander.WDC_Server.Soap.WdcServerException
at
Homag.WoodCommander.WDC_Server.Soap.WDC_ServerSoapSoapBindingImpl.setup(WDC_ServerSoapSoapBindingImpl.java:105)
at
Homag.WoodCommander.WDC_Server.Soap.WDC_ServerSoapSoapBindingSkeleton.setup(WDC_ServerSoapSoapBindingSkeleton.java:173)
at java.lang.reflect.Method.invoke(Native Method)
at
org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:385)
at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:293)
at
org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:332)
at
org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:71)
at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:156)
at org.apache.axis.SimpleChain.invoke(SimpleChain.java:126)
at
org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:469)
at org.apache.axis.server.AxisServer.invoke(AxisServer.java:315)
at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:766)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:339)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:432)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:386)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:534)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:530)
at java.lang.Thread.run(Thread.java:484)
</ns3:stackTrace>
</detail>
</soapenv:Fault>
<multiRef id="id0" soapenc:root="0" soapenv:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" xsi:type
="ns4:WdcServerException" xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns4
="urn:WDC_ServerSoap">
<Data href="#id1"/>
<Data href="#id2"/>
<Data href="#id3"/>
</multiRef>
<multiRef id="id2" soapenc:root="0" soapenv:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns5:ExceptionData"
xmlns:ns5="urn:WDC_ServerSoap" xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/">
<Number xsi:type="xsd:int">2</Number>
<IsNlsText xsi:type="xsd:boolean">false</IsNlsText>
<Text xsi:type="xsd:string">Error %ld</Text>
<FilledText xsi:type="xsd:string">Error 1</FilledText>
<SourceFunction xsi:type="xsd:string">sourceFunction</SourceFunction>
<SourceFileName xsi:type="xsd:string">SourceFileName</SourceFileName>
<SourceLineNumber xsi:type="xsd:int">123</SourceLineNumber>
<FillingWords xsi:type="xsd:string">1</FillingWords>
<FillingWords xsi:type="xsd:string"></FillingWords>
<Category xsi:type="xsd:int">1</Category>
<Priority xsi:type="xsd:int">2</Priority>
</multiRef>
<multiRef id="id3" soapenc:root="0" soapenv:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns6:ExceptionData"
xmlns:ns6="urn:WDC_ServerSoap" xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/">
<Number xsi:type="xsd:int">3</Number>
<IsNlsText xsi:type="xsd:boolean">false</IsNlsText>
<Text xsi:type="xsd:string">Error %ld</Text>
<FilledText xsi:type="xsd:string">Error 2</FilledText>
<SourceFunction xsi:type="xsd:string">sourceFunction</SourceFunction>
<SourceFileName xsi:type="xsd:string">SourceFileName</SourceFileName>
<SourceLineNumber xsi:type="xsd:int">123</SourceLineNumber>
<FillingWords xsi:type="xsd:string">2</FillingWords>
<FillingWords xsi:type="xsd:string"></FillingWords>
<Category xsi:type="xsd:int">1</Category>
<Priority xsi:type="xsd:int">2</Priority>
</multiRef>
<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns7:ExceptionData"
xmlns:ns7="urn:WDC_ServerSoap" xmlns:soapenc
="http://schemas.xmlsoap.org/soap/encoding/">
<Number xsi:type="xsd:int">1</Number>
<IsNlsText xsi:type="xsd:boolean">false</IsNlsText>
<Text xsi:type="xsd:string">Error %ld</Text>
<FilledText xsi:type="xsd:string">Error 0</FilledText>
<SourceFunction xsi:type="xsd:string">sourceFunction</SourceFunction>
<SourceFileName xsi:type="xsd:string">SourceFileName</SourceFileName>
<SourceLineNumber xsi:type="xsd:int">123</SourceLineNumber>
<FillingWords xsi:type="xsd:string">0</FillingWords>
<FillingWords xsi:type="xsd:string"></FillingWords>
<Category xsi:type="xsd:int">1</Category>
<Priority xsi:type="xsd:int">2</Priority>
</multiRef>
</soapenv:Body>
</soapenv:Envelope>
Thanks in advance
Thomas