Hello,

The context :
I'm using Axis2 1.0
I have a service defined in wsdl (see the attachement : upload.wsdl)
I call the operation initUpload.
When a javaException occurs in the method, I send a AxisFault build with
this method :

    public static AxisFault newErreurJava(Exception e) {
        AxisFault ex = new AxisFault(e.toString(), new
QName(WsConstantes.NS_UPLOAD_SERVICE, "erreurJava"));

        // Extraction de la pile d'erreur
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        e.printStackTrace(pw);
        pw.close();

        // Création du détail
        OMFactory factory = OMAbstractFactory.getOMFactory();
        OMNamespace nsUpl =
factory.createOMNamespace(WsConstantes.NS_UPLOAD_TYPES, "upl");
        OMElement detail = factory.createOMElement("javaException", nsUpl);
        factory.createOMElement("class", nsUpl,
detail).setText(e.getClass().getName());
        factory.createOMElement("stack", nsUpl,
detail).setText(sw.toString());
        ex.setDetail(detail);

        return ex;
    }

I naively thought that I would get a correct SOAP:Fault answer with
this. Instead, I get what is in response.xml


I have seen in org.apache.axis2.receivers.RawXMLINOutMessageReceiver

    public void invokeBusinessLogic(MessageContext msgContext,
MessageContext newmsgContext)
            throws AxisFault {
        try {

                /* .... */

                OMElement result;
                try {
                    result = (OMElement) method.invoke(obj, args);
                } catch (Exception e) {
                    throw new AxisFault(e.getMessage());
                }

                /* ... */

        } catch (Exception e) {
            throw AxisFault.makeFault(e);
        }
    }

And in AxisFault :
    public static AxisFault makeFault(Exception e) {
        if (e instanceof InvocationTargetException) {
            Throwable t = ((InvocationTargetException)
e).getTargetException();

            if (t instanceof Exception) {
                e = (Exception) t;
            }
        }

        if (e instanceof AxisFault) {
            return (AxisFault) e;
        }

        return new AxisFault(e);
    }

It seams that the catch around the refective invokation kills the
InvocationTargetException that would be dealed by AxisFault.makeFault()
otherwise.

But because Axis and webservices in general are new for me, I'm not sure
about it.

What can I do to get a SOAP:Fault that is conform to my wsdl ?
Thank you !

-- 
Jérôme Mainaud               Klee Group
[EMAIL PROTECTED]      <http://www.kleegroup.com/>
+ 33 146 295 825            Tel: + 33 146 292 525
                            Fax: + 33 146 292 529
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/";
        xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/";
        xmlns:ns="urn:klee:arcade:upload:service" 
xmlns:types="urn:klee:arcade:upload:types"
        xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
targetNamespace="urn:klee:arcade:upload:service">
        <wsdl:types>
                <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
targetNamespace="urn:klee:arcade:upload:types"
                        elementFormDefault="unqualified" 
attributeFormDefault="unqualified">

                        <xs:complexType name="typeTypeDeFichier">
                                <xs:sequence>
                                        <xs:element type="xs:string" 
name="extension" />
                                        <xs:element type="xs:boolean" 
name="autorisé" />
                                        <xs:element type="xs:boolean" 
name="convertible" />
                                </xs:sequence>
                        </xs:complexType>

                        <xs:complexType name="vide"></xs:complexType>

                        <xs:element name="uploadSession" type="xs:string" />
                        <xs:element name="dossierId" type="xs:long" />

                        <xs:element name="initUpload">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element ref="dossierId" />
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>

                        <xs:element name="initUploadResponse">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element ref="uploadSession" 
/>
                                                <xs:element name="transportUri" 
type="xs:string" />
                                                <xs:element 
name="algorithmeEmpreinte" type="xs:string"/>
                                                <xs:element name="infoDossier">
                                                        <xs:complexType>
                                                                <xs:sequence>
                                                                        
<xs:element name="lotId" type="xs:long" />
                                                                        
<xs:element name="lotIntitule" type="xs:string" />
                                                                        
<xs:element name="dossierId" type="xs:long" />
                                                                        
<xs:element name="dosNumeroComplet" type="xs:string" />
                                                                        
<xs:element name="dosIntitule" type="xs:string" />
                                                                </xs:sequence>
                                                        </xs:complexType>
                                                </xs:element>

                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>

                        <xs:element name="javaException">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element name="class" 
type="xs:string" />
                                                <xs:element name="stack" 
type="xs:string" />
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>

                        <xs:element name="terminerUpload">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element ref="uploadSession" 
/>
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>

                        <xs:element name="listerLesTypesDeFichier" type="vide" 
/>

                        <xs:element name="listeDesFormatsDeFichier">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element 
name="typeDeFichier" minOccurs="0" type="typeTypeFichier" maxOccurs="unbounded" 
/>
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>

                        <xs:element name="ajouterFichier">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element ref="uploadSession" 
/>
                                                <xs:element ref="dossierId" />
                                                <xs:element name="nom" 
type="xs:string" />
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>

                        <xs:element name="ajouterFichierResponse">
                                <xs:complexType>
                                        <xs:sequence>
                                                <xs:element ref="uploadSession" 
/>
                                                <xs:element ref="dossierId" />
                                                <xs:element name="nom" 
type="xs:string" />
                                                <xs:element name="résultat" 
type="xs:string" />
                                        </xs:sequence>
                                </xs:complexType>
                        </xs:element>
                </xs:schema>
        </wsdl:types>
        <wsdl:message name="initUploadMessage">
                <wsdl:part element="types:initUpload" name="part1" />
        </wsdl:message>
        <wsdl:message name="initUploadResponseMessage">
                <wsdl:part element="types:initUploadResponse" name="part1" />
        </wsdl:message>
        <wsdl:message name="javaExceptionMessage">
                <wsdl:part element="types:javaException" 
name="part1"></wsdl:part>
        </wsdl:message>
        <wsdl:message name="listerLesTypesDeFichierrMessage">
                <wsdl:part element="types:listerLesTypesDeFichier" name="part1" 
/>
        </wsdl:message>
        <wsdl:message name="listerLesTypesDeFichierResponseMessage">
                <wsdl:part element="types:listeDesFormatsDeFichier" 
name="part1" />
        </wsdl:message>
        <wsdl:message name="terminerUploadMessage">
                <wsdl:part element="types:terminerUpload" 
name="part1"></wsdl:part>
        </wsdl:message>
        <wsdl:message name="ajouterFichierMessage">
                <wsdl:part element="types:ajouterFichier" 
name="part1"></wsdl:part>
        </wsdl:message>
        <wsdl:message name="ajouterFichierResponseMessage">
                <wsdl:part element="types:ajouterFichierResponse" 
name="part1"></wsdl:part>
        </wsdl:message>
        <wsdl:portType name="UploadServicePortType">
                <wsdl:operation name="initUpload">
                        <wsdl:input message="ns:initUploadMessage" />
                        <wsdl:output message="ns:initUploadResponseMessage" />
                        <wsdl:fault name="fault" 
message="ns:javaExceptionMessage"></wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="listerLesTypesDeFichier">
                        <wsdl:input message="ns:listerLesTypesDeFichierMessage" 
/>
                        <wsdl:output 
message="ns:listerLesTypesDeFichierResponseMessage" />
                </wsdl:operation>
                <wsdl:operation name="ajouterFichier">
                        <wsdl:input message="ns:ajouterFichierMessage" />
                        <wsdl:output message="ns:ajouterFichierResponseMessage" 
/>
                </wsdl:operation>
                <wsdl:operation name="terminerUpload">
                        <wsdl:input message="ns:terminerUploadMessage" />
                </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding type="ns:UploadServicePortType" 
name="UploadServiceSOAP11Binding">
                <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
                <wsdl:operation name="initUpload">
                        <soap:operation style="document" 
soapAction="urn:initUpload" />
                        <wsdl:input>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:output>
                        <wsdl:fault name="fault">
                                <soap:fault name="fault" 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="listerLesTypesDeFichier">
                        <soap:operation style="document" 
soapAction="urn:listerLesTypesDeFichier" />
                        <wsdl:input>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:output>
                </wsdl:operation>
                <wsdl:operation name="ajouterFichier">
                        <soap:operation style="document" 
soapAction="urn:ajouterFichier" />
                        <wsdl:input>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:output>
                </wsdl:operation>
                <wsdl:operation name="terminerUpload">
                        <soap:operation style="document" 
soapAction="urn:terminerUpload" />
                        <wsdl:input>
                                <soap:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                </wsdl:operation>
        </wsdl:binding>
        <wsdl:binding type="ns:UploadServicePortType" 
name="UploadServiceSOAP12Binding">
                <soap12:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"; />
                <wsdl:operation name="initUpload">
                        <soap12:operation style="document" 
soapAction="urn:initUpload" />
                        <wsdl:input>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:output>
                        <wsdl:fault name="fault">
                                <soap12:fault name="fault" 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:fault>
                </wsdl:operation>
                <wsdl:operation name="listerLesTypesDeFichier">
                        <soap12:operation style="document" 
soapAction="urn:listerLesTypesDeFichier" />
                        <wsdl:input>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:output>
                </wsdl:operation>
                <wsdl:operation name="ajouterFichier">
                        <soap12:operation style="document" 
soapAction="urn:ajouterFichier" />
                        <wsdl:input>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                        <wsdl:output>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:output>
                </wsdl:operation>
                <wsdl:operation name="terminerUpload">
                        <soap12:operation style="document" 
soapAction="urn:terminerUpload" />
                        <wsdl:input>
                                <soap12:body 
namespace="urn:klee:arcade:upload:service" use="literal" />
                        </wsdl:input>
                </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="upload">
                <wsdl:port binding="ns:UploadServiceSOAP11Binding" 
name="UploadServiceSOAP11port">
                        <soap:address 
location="http://localhost:8080/arcade/services/UploadService"; />
                </wsdl:port>
                <wsdl:port binding="ns:UploadServiceSOAP12Binding" 
name="UploadServiceSOAP12port">
                        <soap12:address 
location="http://localhost:8080/arcade/services/UploadService"; />
                </wsdl:port>
        </wsdl:service>
</wsdl:definitions>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";><soapenv:Header /><soapenv:Body><soapenv:Fault><faultcode>soapenv:Client</faultcode><faultstring>unknown</faultstring><detail><Exception>
org.apache.axis2.AxisFault
	at org.apache.axis2.receivers.RawXMLINOutMessageReceiver.invokeBusinessLogic(RawXMLINOutMessageReceiver.java:102)
	at org.apache.axis2.receivers.AbstractInOutSyncMessageReceiver.receive(AbstractInOutSyncMessageReceiver.java:37)
	at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:454)
	at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:284)
	at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:136)
	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:214)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
	at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
	at java.lang.Thread.run(Thread.java:534)
</Exception></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to