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