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
> 
> 
> 
> 

Reply via email to