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