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

Reply via email to