Thanks Cory: I know that this question has been asked again and again but I can't find the answer.
My steps have been: - create the wsdl - use org.apache.axis.wsdl.WSDL2Java with --server-side - implementing MySearchBindingImpl.java - copy deploy.wsdd (service part) to server-config.wsdd All is ok except when an axception is generated. My service element in server-config.wsdd is: <service name="MySearchPort" provider="java:RPC" style="rpc" use="encoded"> <parameter name="wsdlTargetNamespace" value="urn:AriannaSearch"/> <parameter name="wsdlServiceElement" value="AriannaSearchService"/> <parameter name="wsdlServicePort" value="AriannaSearchPort"/> <parameter name="className" value="AriannaSearch.AriannaSearchBindingImpl"/> <parameter name="wsdlPortType" value="AriannaSearchPort"/> <operation name="doAriannaSearch" qname="operNS:doAriannaSearch" xmlns:operNS="urn:AriannaSearch" returnQName="return" returnType="rtns:AriannaSearchResult" xmlns:rtns="urn:AriannaSearch" > <parameter name="query" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/> <parameter name="pagina" type="tns:int" xmlns:tns="http://www.w3.org/2001/XMLSchema"/> <parameter name="service" type="tns:string" xmlns:tns="http://www.w3.org/2001/XMLSchema"/> <parameter name="nameparam" type="tns:ArrayOfString" xmlns:tns="urn:AriannaSearch"/> <parameter name="valueparam" type="tns:ArrayOfString" xmlns:tns="urn:AriannaSearch"/> <fault name="doAriannaException" qname="fns:fault" xmlns:fns="urn:AriannaSearch" class="AriannaSearch.DoAriannaExcep tion" type="tns:doAriannaException" xmlns:tns="urn:AriannaSearch"/> </operation> <parameter name="allowedMethods" value="doAriannaSearch"/> <typeMapping xmlns:ns="urn:AriannaSearch" qname="ns:ResultElementArray" type="java:AriannaSearch.ResultElement[]" serializer="org.apache.axis.encoding.ser.ArraySerializerFactory" deserializer="org.apache.axis.encoding.ser.ArrayDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" /> <typeMapping xmlns:ns="urn:AriannaSearch" qname="ns:AriannaSearchResult" type="java:AriannaSearch.AriannaSearchResult" serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" Il mer, 2003-08-27 alle 16:26, Cory Wilkerson ha scritto: > This question has been asked time and again and I've yet to see a real definitive > answer come through. For starters, you might want to try some of the Axis nightly > drops, I've had better luck with them serializing my exceptions. > > In the case where I have exceptions working, I've subclassed exception and according > to the jax-rpc specification (I don't know if Axis pays any attention here at all > with exceptions): > > 1. Provided accessors for each parameter supplied to my constructor (and conversely > ensured that each accessor had a parameter in the constructor). > 2. Ensured that the parameter type in constructor was identical to return type of > accessor. > 3. Ensured that there was only one accessor with a given return type (I actually > cheated here though I would expect I'll see some crazy results because of it.) > > I also am not sure if Axis appropriately generates fault elements in your WSDL based > on your exception type. If you don't see it in the WSDL you're generating stubs > against, you'll never see an "exception" in you client code. > > Good luck! > Cory > > > > -----Original Message----- > From: Marco Spinetti [mailto:[EMAIL PROTECTED] > Sent: Wednesday, August 27, 2003 9:13 AM > To: [EMAIL PROTECTED] > Subject: Soap Fault Explanation > > > Hi, > > I'm developing a soap web service with axis (my configuration is apache > + tomcat with axis). > > In some circumstances my web services has to create a SOAP fault which > has to be sent to the client. > > I'm a a bit confused with Axis management of SOAP fault (I've tried to > read email in mailing list but without success too). > > I've declared my Exception: > > public class DoMyException extends org.apache.axis.AxisFault > implements java.io.Serializable { > private int codice; > private java.lang.String stringa; > > public DoMyException() { > } > > public DoMyException( > int codice, > java.lang.String stringa) { > this.codice = codice; > this.stringa = stringa; > } > ....... > } > > In my web services method, in some circumstances, I throw such > exception: > > public MySearchResult doMySearch(java.lang.String query) throws > java.rmi.RemoteException, DoMyException { > > ...... > > try { > if (cond) { > throw new DoMyException(1, "Description"); > } > } > catch (DoMyException e) { > ...... > throw e; > } > ..... > } > > > When in my test client I try to generate a SOAP fault I don't receive > anything. With SOAPMonitor I see the request SOAP message but not the > response. > > My client: > > try { > MySearchService service = new MySearchServiceLocator(); > MySearchPort port = service.getMySearchPort(); > > ......... > MySearchResult r = port.doMySearch(query); > > ..... > } > catch (DoMyException e) { > System.err.println("Cod = " + e.getCodice()); > System.err.println("String = " + e.getStringa()); > System.exit(1); > } > > > Probably I'm making some mistakes but I don't see where. > > Any help would be very useful. > > Thanks > > > Bye > > --Marco > > > >