Hi Mariano, Just to add further .... we had problem in catching custom exceptions by .NET clients although Axis generated java clients worked fine. I think for .NET clients one has to do low-level job of handling XML and parsing it and then be able to get at the details of exception.
Mariano, I still think WSDL is the ONLY thing that is needed and as far as I know AXIS automatically subclass custom exceptions from AxisFaults. The point is all custom exceptions get wrapped up as AxisFaults. Another point custom exceptions are a known problem with DII clients. Initially, we tried with DII but then realised that its a problem and moved on to stubs approach and it worked. Sunil Kothari ----- Original Message ----- From: Mariano Eloy Fern�ndez <[EMAIL PROTECTED]> Date: Wednesday, February 23, 2005 3:16 pm Subject: Re: How do I deserialize the detail field in AxisFault to build MyException? > Hi Sunil, > > Thanks for the harping, I really need it to get it straight. > This is what I understand, though I may not be well. > The classes generated from the WSDL types are for the following > scenario:You want to access a web service, published with a > different framework, > say, > (everybody hold on tight and say aughhh) .NET (auughh). Hey, I > heared a > Doh! over there. > Enter Axis, generate client stub and classes for the types from > the WSDL > provided. > All well, that's all right, becouse you need these type classes as > you > don't have the original ones. > But say the service operation op1() throws OpException. > How, in the name of Christina Aguilera, do we catch OpException > when > using the stub client provided by Axis? > Now we are sure, plenty sure, that the developer that decided to > throw > OpException did not subclass AxisFault, did he? > So, how will Axis's stub client throw OpException when suitable? > > I felt this topic was over when I received your response and that > I > shuold not harper further. > But I am not satisfied and you know me..... > > Best wishes, > > Mariano. > > Sunil Kothari wrote: > > >Hi Mariano, > > Sorry for harping on the same point. I think if I get you > correctly > >then you will have to use generated classes and throw away YOUR > classes > >(classes used to generate WSDl). WSDL contains everything > .........so > >its all up to the framework to make sense of fault and > faultdetails and > >generate classes accordingly. > > > >If you want to make changes then make changes(additions I > suppose) to > >Axis generated classes. > > > >I hope that helps and gets you exceptions with details :) > > > >Sunil Kothari > > > >----- Original Message ----- > >From: Mariano Eloy Fern�ndez <[EMAIL PROTECTED]> > >Date: Wednesday, February 23, 2005 2:42 pm > >Subject: Re: How do I deserialize the detail field in AxisFault > to > >build MyException? > > > > > > > >>Hello, > >> > >>MyException is declared correctly, i think. Here's the WSDL segment. > >> <complexType name="MyException"> > >> <sequence> > >> <element name="clave" nillable="true" type="xsd:string"/> > >> <element name="localizedMessage" nillable="true" > >>type="xsd:string"/> </sequence> > >> </complexType> > >> > >>...... > >> <wsdl:fault name="MyException"> > >> <wsdlsoap:fault use="encoded" > >>encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" > >>namespace="someUri"/> > >> </wsdl:fault> > >> > >>Yes, I guess I am using Axis the normal way. Interface -->WSDL-- > >> > >> > >>>stubs > >>> > >>> > >>and skeletons. > >>I am using axis both for publishing the service and for calling > it > >>from > >>the stub client. > >>However, I am getting rid of the classes generated from the > types > >>in WSDL. > >>Why? Because I already have them. They are the same classes I > have > >>on > >>the server, including > >>MyException. Sure, I could use MyException generated by Axis, > but, > >>why, > >>having the original MyException class? > >> > >>My goal is to make the stub client throw instances of > MyException > >>(my > >>implementation of MyException) > >>transparently, not letting the ones using the stub provided by > >>Axis know > >>anything else. > >> > >>A different thing is Axis not supporting what i need, say, > making > >>me > >>subclass AxisFault, which I stated I'll try to avoid. > >>However, if everything else fails, well.... > >> > >>Thanks again Sunil. > >> > >>Mariano. > >> > >>Sunil Kothari wrote: > >> > >> > >> > >>>Let me elaborate further. I think if your exception structure > is > >>>declared correctly in WSDL then the framework comes into > picture > >>> > >>> > >>only > >> > >> > >>>when you generate java/.NET server/client code from it. > >>> > >>>When I say subclass AxisFault I assume that you go the normal > way > >>> > >>> > >>of > >> > >> > >>>generating a java interface ---> WSDL ---> stubs and skeletons. > >>>and you use only Axis all the way. > >>> > >>>I think its your "framework" which has to generate correct code > >>> > >>> > >>based > >> > >> > >>>on WSDL. When I say subclass AxisFault I mean if you use Axis > >>> > >>> > >>then > >> > >> > >>>that's the way. > >>> > >>>If you want to get hold of XML and use a handler then I think > >>> > >>> > >>that > >> > >> > >>>should work too. > >>> > >>>Sunil Kothari > >>> > >>> > >>>----- Original Message ----- > >>>From: Mariano Eloy Fern�ndez <[EMAIL PROTECTED]> > >>>Date: Wednesday, February 23, 2005 2:14 pm > >>>Subject: Re: How do I deserialize the detail field in AxisFault > >>> > >>> > >>to > >> > >> > >>>build MyException? > >>> > >>> > >>> > >>> > >>> > >>>>Hello, > >>>> > >>>>Thanks Sunil, I have already seen people subclassing > AxisFault, > >>>>but I > >>>>refuse doing such a thing. > >>>>MyException is a "ServiceException", and should know anything > >>>>about > >>>>being published with Axis. > >>>>Imagine just tomorrow I decide to move onto some other > framework > >>>>to > >>>>publish/call Web Services. > >>>>Then what, should I subclass some other different > >>>> > >>>> > >>FrameworkFault? > >> > >> > >>>>Of > >>>>course not. > >>>> > >>>>My idea is to get grip of that XML provided in the AxisFault > on > >>>>the > >>>>client Stub, unwrap MyException and throw it, > >>>>so that the stub throws true MyException instances (or > >>>>RemoteExceptions, > >>>>if some ConnectRefused-like occurs) > >>>> > >>>>In all, I�ll keep on trying, and thanks a lot for your comment. > >>>> > >>>>Mariano. > >>>> > >>>>Sunil Kothari wrote: > >>>> > >>>> > >>>> > >>>> > >>>> > >>>>>No, you don't have to do it manually. Just make sure that > your > >>>>> > >>>>> > >>>>> > >>>>> > >>>>WSDL > >>>> > >>>> > >>>> > >>>> > >>>>>correctly reflects the structure of MyException. I found that > >>>>> > >>>>> > >>>>> > >>>>> > >>>>java2wsdl > >>>> > >>>> > >>>> > >>>> > >>>>>tool somehow misses the structure of application-specific > >>>>> > >>>>> > >>>>> > >>>>> > >>>>exceptions. > >>>> > >>>> > >>>> > >>>> > >>>>>To get hold of the exception use try-catch mechanism. Note > that > >>>>>MyException should subclass AxisFault. > >>>>> > >>>>>If you still have problems then let me know so that I can > send > >>>>> > >>>>> > >>>>> > >>>>> > >>>>you a > >>>> > >>>> > >>>> > >>>> > >>>>>sample code. > >>>>> > >>>>>I hope that helps. > >>>>> > >>>>>Sunil Kothari > >>>>>----- Original Message ----- > >>>>>From: Mariano Eloy Fern�ndez <[EMAIL PROTECTED]> > >>>>>Date: Wednesday, February 23, 2005 1:45 pm > >>>>>Subject: Re: How do I deserialize the detail field in > AxisFault > >>>>> > >>>>> > >>>>> > >>>>> > >>>>to > >>>> > >>>> > >>>> > >>>> > >>>>>build MyException? > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>>>>Hi, > >>>>>> > >>>>>>Some additional notes. > >>>>>>The XML comes in a protected attrbute called faultDetails, > >>>>>>inaccesible.The public detail field is null. > >>>>>>The question stands, How do I build MyException from this > >>>>>> > >>>>>> > >>AxisFault?>>>> > >> > >> > >>>>>>Thanks, > >>>>>> > >>>>>>Mariano. > >>>>>> > >>>>>>Mariano Eloy Fern�ndez wrote: > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>Hello, > >>>>>>> > >>>>>>>I am working with Axis 1.1 > >>>>>>>I have a class MyException extends Exception thrown in the > >>>>>>> > >>>>>>> > >>Web > >> > >> > >>>>>>>Service. Both De/Serializer are provided for MyException. > >>>>>>>An AxisFault is received in the client with MyException as > an > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>XML in > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>the detail field of AxisFault. > >>>>>>>How do I build MyException from that XML? Do I have to do > it > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>manually? > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>>>Then what's the MyExceptionDe/Serializer for? > >>>>>>> > >>>>>>>Thanks, > >>>>>>> > >>>>>>>Mariano Eloy Fern�ndez. > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>>> > >>>>> > >>>>> > >>>>> > >>>>> > >>>> > >>>> > >>>> > >>>> > >>> > >>> > >>> > >>> > >> > >> > > > > > > > > > >
