just to correct: AxisFault.getDetail is not "empty", it is null.

> -----Original Message-----
> From: Jay Zawar 
> Sent: mercredi 26 septembre 2007 16:32
> To: axis-user@ws.apache.org
> Subject: Urgent - Exception Mapping with Axis2
> 
> 
> Hi people,
> 
> I am really puzzled about Axis Code generators and the way 
> custom exceptions are passed. I do not even find good 
> documentation on it. I've been on this problem for almost a 
> week now, and still do not find any answer. My problem: I can 
> invoke web services without problems, but I do not get back 
> customized exceptions on my Java client side.
> 
> Here is my generation procedure and source:
> 1) I write a class AService, in which I define one simple 
> operation (add(int,int,int)), it returns a result of type 
> long, if the third argument is 0. If the 3rd int is not 0, it 
> will throw "CustomException".
> 2) "CustomException" is a class defined as extending 
> java.lang.Exception and implements java.io.Serializable
> 3) I generate the service with Axis2 tools, and deploy the service.
> 4) I generate the wsdl. The wsdl correctly includes the fault 
> element named <wsdl:fault name="CustomException">
>       <soap:fault use="literal" name="CustomException"/>
> 5) I generate the java client with the axis2 codegen wizard.
> 6) I invoke the web service with it, without exception testing: works.
> 7) I invoke it to throw the exception (3rd int = 1): doesn't 
> work. I only get an AxisFault. But the generated client 
> should throw a CustomException. AxisFault.getDetail() is empty. 
> 
> What is wrong ?
> I include the 2 simple java files from which I started here:
> package com.foo.bar;
> 
> 
> public class AService {
>       public long Add(int a, int b, int exceptionThrown) 
> throws CustomException {
>               
>               if (exceptionThrown != 0) {
>                       System.out.println("CustomException to 
> b instantiated");     
>                       
>                       CustomException e = new CustomException();
>                       e.setCustomMsg("bar");
>                       throw e;
>               }
>               
>               
>               return a+b;}
>       
> }
> 
> Here the exception class:
> package com.foo.bar;
> 
> import java.io.Serializable;
> 
> public class CustomException extends java.lang.Exception 
> implements Serializable {
> 
>       private static final long serialVersionUID = 
> 1542353156105984960L;
>       private String customMsg;
>       
>       public String getCustomMsg() {return customMsg;}
>       public void setCustomMsg(String customMsg) 
> {this.customMsg=customMsg;}
>       
> 
> }
> 
> 
> Here is the generated WSDL:
> <wsdl:definitions 
> 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:xsd="http://bar.foo.com/xsd"; 
> xmlns:ns="http://bar.foo.com"; 
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
> targetNamespace="http://bar.foo.com";><wsdl:types><xs:schema 
> xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
> attributeFormDefault="qualified" 
> elementFormDefault="qualified" 
> targetNamespace="http://bar.foo.com/xsd";>
> <xs:element name="CustomExceptionFault">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="CustomException" nillable="true" 
> type="xsd:CustomException" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="CustomException" type="xsd:CustomException" />
> <xs:complexType name="CustomException">
> <xs:complexContent>
> <xs:extension base="xs:Exception">
> <xs:sequence>
> <xs:element name="customMsg" nillable="true" type="xs:string" />
> </xs:sequence>
> </xs:extension>
> </xs:complexContent>
> </xs:complexType>
> <xs:element name="Add">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="a" nillable="true" type="xs:int" />
> <xs:element name="b" nillable="true" type="xs:int" />
> <xs:element name="exceptionThrown" nillable="true" type="xs:int" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="AddResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="return" nillable="true" type="xs:long" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:schema></wsdl:types><wsdl:message 
> name="AddMessage"><wsdl:part name="part1" element="xsd:Add" 
> /></wsdl:message><wsdl:message 
> name="AddResponseMessage"><wsdl:part name="part1" 
> element="xsd:AddResponse" /></wsdl:message><wsdl:message 
> name="CustomException"><wsdl:part name="part1" 
> element="xsd:CustomException" /></wsdl:message><wsdl:portType 
> name="AServicePortType"><wsdl:operation 
> name="Add"><wsdl:input 
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
> wsaw:Action="urn:Add" message="ns:AddMessage" /><wsdl:output 
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"; 
> message="ns:AddResponseMessage" wsaw:Action="urn:Add" 
> /><wsdl:fault message="ns:CustomException" 
> name="CustomException" 
> /></wsdl:operation></wsdl:portType><wsdl:binding 
> name="AServiceSOAP11Binding" 
> type="ns:AServicePortType"><soap:binding 
> transport="http://schemas.xmlsoap.org/soap/http"; 
> style="document" /><wsdl:operation name="Add"><soap:operation 
> soapAction="urn:Add" style="document" 
> /><wsdl:input><soap:body use="literal" 
> /></wsdl:input><wsdl:output><soap:body use="literal" 
> /></wsdl:output><wsdl:fault name="CustomException"><soap:body 
> use="literal" 
> /></wsdl:fault></wsdl:operation></wsdl:binding><wsdl:binding 
> name="AServiceSOAP12Binding" 
> type="ns:AServicePortType"><soap12:binding 
> transport="http://schemas.xmlsoap.org/soap/http"; 
> style="document" /><wsdl:operation 
> name="Add"><soap12:operation soapAction="urn:Add" 
> style="document" /><wsdl:input><soap12:body use="literal" 
> /></wsdl:input><wsdl:output><soap12:body use="literal" 
> /></wsdl:output><wsdl:fault 
> name="CustomException"><soap12:body use="literal" 
> /></wsdl:fault></wsdl:operation></wsdl:binding><wsdl:service 
> name="AService"><wsdl:port name="AServiceSOAP11port" 
> binding="ns:AServiceSOAP11Binding"><soap:address 
> location="http://localhost:8080/axis2/services/AService"; 
> /></wsdl:port><wsdl:port name="AServiceSOAP12port" 
> binding="ns:AServiceSOAP12Binding"><soap12:address 
> location="http://localhost:8080/axis2/services/AService"; 
> /></wsdl:port></wsdl:service></wsdl:definitions>
> 
> Thanks in advance for help,
> 
> Jay
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

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

Reply via email to