Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body - Found word(s) check out in the subject

2006-04-07 Thread Thom Hehl
Sorry, you are passing my area of expertise. What we were seeing was we 
were sending a custom fault, but it was de-serializing as another, 
random, fault. Not sure what you're looking for here, then.


Sorry I couldn't be of more help.

Veprinsky, Michael wrote:

Well, I guess the question would be what do you mean by "correct". I get
XML very similar to what Jack got, namely:

http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>


soapenv:Server.userException
subprod.dis.fault.MVException: Hello world my
...


http://schemas.xmlsoap.org/soap/encoding/";>
BAD_DAY
RAIN
WS_SUCK


http://xml.apache.org/axis/";>
myhost





It obviously is not formated this way, I made it more readable (tried at
least). Basically what I did was I extended Exception with my own class
and added a list of error codes (just a list of Strings called "codes",
list is not typed)
As you can see, I get this fault and I can deserialize it (and I can
probably even get into "details"). It is possible that if I generate a
client with WSDL2Java (for now I just use Call class) I will even get
this exception (not sure, would need to test). However as I mentioned
before the service is supposed to be cross-platform so I would very much
like to control faultcode and faultstring so that C++ or Python would be
able to process it. I can probably get them to process custom XML but
you must agree this kinda violates the purpose of using SOAP in the
first place.
I was able to set both values I need through making my exception extend
AxisFault, which is an option, but I wanted to see if there are other
options too (namely custom serialization of standard exceptions).

Another question - I think SOAP allows to have multiple Faults in one
response. Is this correct and if it is, is there a way to have multiple
faults with Axis?

Thank you,
-Michael

___
Tell a man there are 300 billion stars in the universe and he'll believe
Tell him a bench has wet paint on it and he'll have to touch to be sure
  -- /usr/bin/fortune


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
On Behalf Of Thom Hehl
Sent: Thursday, April 06, 2006 5:10 AM
To: axis-user@ws.apache.org
Subject: Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions
to work - Found word(s) check out in the Text body - Found word(s) check
out in the subject


Right. We use the WSDL to build java from, not the other way round. The 
problem is a bug in axis. We're going to write it up when we get the 
chance. In the meantime, you will need to decide whether or not to 
modify the WSDL.


I will bet that if you look at the XML coming from the server, it is 
correct. The problem lies in the de-serialization of the fault. This is 
a work-around for that problem.


Veprinsky, Michael wrote:
  

Hello!
I decided to piggy-back on this thread... I am having similar 
problems.


Thom,
What did you mean? I suppose recommend changing WSDL definition but a)



  

my WSDL is auto-published so I can't really change it and b) even if I



  
do, it does not change the XML that server generates and that is 
totally language-specific which kinda violates the purpose. Or did you



  

mean something else?

I am using Axis 1.3. I have following questions:
1) Is there a way to set server to use SOAP 1.2 (RTFMs are welcome, 
just tell where)?
2) Is there a way to specify custom values for faultcode/faultstring? 
Best I could get was my exception being serialized into XML under 
details but then I have to process it as XML :-\
3) Overall, I need to publish a web service that is going to be used 
from different platforms. Is my best bet to just give up faults 
altogether and use some custom base result structure with generic 
error passing engine? Any recommendations (again, RTFMs are welcome)


I do not expect much success since the envelope XSD itself is pretty 
limiting (http://schemas.xmlsoap.org/soap/envelope, toward the end), 
it's just those two fields and freeform XML "details". SOAP 1.2 looks 
a little better but without documentation it did not help much either.


Any recommendations/insights are welcome.
Thank you,
-Michael

___
Tell a man there are 300 billion stars in the universe and he'll 
believe Tell him a bench has wet paint on it and he'll have to touch


to be sure
  

  -- /usr/bin/fortune


-Original Message-
From: Thom Hehl [mailto:[EMAIL PROTECTED]
Sent: Thursday, March 30, 2006 1:47 PM
To:

RE: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body - Found word(s) check out in the subject

2006-04-06 Thread Veprinsky, Michael
Well, I guess the question would be what do you mean by "correct". I get
XML very similar to what Jack got, namely:

http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsd="http://www.w3.org/2001/XMLSchema";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>


soapenv:Server.userException
subprod.dis.fault.MVException: Hello world my
...


http://schemas.xmlsoap.org/soap/encoding/";>
BAD_DAY
RAIN
WS_SUCK


http://xml.apache.org/axis/";>
myhost





It obviously is not formated this way, I made it more readable (tried at
least). Basically what I did was I extended Exception with my own class
and added a list of error codes (just a list of Strings called "codes",
list is not typed)
As you can see, I get this fault and I can deserialize it (and I can
probably even get into "details"). It is possible that if I generate a
client with WSDL2Java (for now I just use Call class) I will even get
this exception (not sure, would need to test). However as I mentioned
before the service is supposed to be cross-platform so I would very much
like to control faultcode and faultstring so that C++ or Python would be
able to process it. I can probably get them to process custom XML but
you must agree this kinda violates the purpose of using SOAP in the
first place.
I was able to set both values I need through making my exception extend
AxisFault, which is an option, but I wanted to see if there are other
options too (namely custom serialization of standard exceptions).

Another question - I think SOAP allows to have multiple Faults in one
response. Is this correct and if it is, is there a way to have multiple
faults with Axis?

Thank you,
-Michael

___
Tell a man there are 300 billion stars in the universe and he'll believe
Tell him a bench has wet paint on it and he'll have to touch to be sure
  -- /usr/bin/fortune


-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
On Behalf Of Thom Hehl
Sent: Thursday, April 06, 2006 5:10 AM
To: axis-user@ws.apache.org
Subject: Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions
to work - Found word(s) check out in the Text body - Found word(s) check
out in the subject


Right. We use the WSDL to build java from, not the other way round. The 
problem is a bug in axis. We're going to write it up when we get the 
chance. In the meantime, you will need to decide whether or not to 
modify the WSDL.

I will bet that if you look at the XML coming from the server, it is 
correct. The problem lies in the de-serialization of the fault. This is 
a work-around for that problem.

Veprinsky, Michael wrote:
> Hello!
> I decided to piggy-back on this thread... I am having similar 
> problems.
>
> Thom,
> What did you mean? I suppose recommend changing WSDL definition but a)

> my WSDL is auto-published so I can't really change it and b) even if I

> do, it does not change the XML that server generates and that is 
> totally language-specific which kinda violates the purpose. Or did you

> mean something else?
>
> I am using Axis 1.3. I have following questions:
> 1) Is there a way to set server to use SOAP 1.2 (RTFMs are welcome, 
> just tell where)?
> 2) Is there a way to specify custom values for faultcode/faultstring? 
> Best I could get was my exception being serialized into XML under 
> details but then I have to process it as XML :-\
> 3) Overall, I need to publish a web service that is going to be used 
> from different platforms. Is my best bet to just give up faults 
> altogether and use some custom base result structure with generic 
> error passing engine? Any recommendations (again, RTFMs are welcome)
>
> I do not expect much success since the envelope XSD itself is pretty 
> limiting (http://schemas.xmlsoap.org/soap/envelope, toward the end), 
> it's just those two fields and freeform XML "details". SOAP 1.2 looks 
> a little better but without documentation it did not help much either.
>
> Any recommendations/insights are welcome.
> Thank you,
> -Michael
>
> ___
> Tell a man there are 300 billion stars in the universe and he'll 
> believe Tell him a bench has wet paint on it and he'll have to touch
to be sure
>       -- /usr/bin/fortune
>
>
> -Original Message-
> From: Thom Hehl [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 30, 2006 1:47 PM
> To: axis-user@ws.apache.org
> Subject: Re: [SPAM] - Re: [SPAM] - Re: Problems getting user
exceptions
> to work - Foun

Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body - Found word(s) check out in the subject

2006-04-06 Thread Thom Hehl
Right. We use the WSDL to build java from, not the other way round. The 
problem is a bug in axis. We're going to write it up when we get the 
chance. In the meantime, you will need to decide whether or not to 
modify the WSDL.


I will bet that if you look at the XML coming from the server, it is 
correct. The problem lies in the de-serialization of the fault. This is 
a work-around for that problem.


Veprinsky, Michael wrote:

Hello!
I decided to piggy-back on this thread... I am having similar problems.

Thom,
What did you mean? I suppose recommend changing WSDL definition but a)
my WSDL is auto-published so I can't really change it and b) even if I
do, it does not change the XML that server generates and that is totally
language-specific which kinda violates the purpose. Or did you mean
something else?

I am using Axis 1.3. I have following questions:
1) Is there a way to set server to use SOAP 1.2 (RTFMs are welcome, just
tell where)?
2) Is there a way to specify custom values for faultcode/faultstring?
Best I could get was my exception being serialized into XML under
details but then I have to process it as XML :-\
3) Overall, I need to publish a web service that is going to be used
from different platforms. Is my best bet to just give up faults
altogether and use some custom base result structure with generic error
passing engine? Any recommendations (again, RTFMs are welcome)

I do not expect much success since the envelope XSD itself is pretty
limiting (http://schemas.xmlsoap.org/soap/envelope, toward the end),
it's just those two fields and freeform XML "details". SOAP 1.2 looks a
little better but without documentation it did not help much either.

Any recommendations/insights are welcome.
Thank you,
-Michael

___
Tell a man there are 300 billion stars in the universe and he'll believe
Tell him a bench has wet paint on it and he'll have to touch to be sure
  -- /usr/bin/fortune


-Original Message-
From: Thom Hehl [mailto:[EMAIL PROTECTED] 
Sent: Thursday, March 30, 2006 1:47 PM

To: axis-user@ws.apache.org
Subject: Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions
to work - Found word(s) check out in the Text body - Found word(s) check
out in the subject


Have a look at this:

Give him This:
_original type def from imported xsd___
  
   
  

_also needed in wsdl file___

type="ns:InvalidDateException"/>



*(in the portType operation definition for a method throwing a fault)*
message="ns:InvalidDateExceptionFault"/>


*(in the binding operation definintion for a method throwing a fault)*






Jack Lund wrote:

  

See, I'm not really sure. The JAX/RPC spec is kinda hazy on how
exceptions are handled, and how the soap fault maps to an exception. 
Here's what I'm seeing come back from the server:



xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

   
   
   soapenv:Server.userException
   com.foobar.ecommerce.beans.InvalidDateException: A



  

valid date must be specified in the form of MM/DD/.
   
   xsi:type="ns1:InvalidDateException" xmlns:ns1="urn:ClaimsData"/>
   


xmlns:ns2="http://xml.apache.org/axis/";>staportal01.stratarc.netstname> 
  

   
   
   


And here's what the corresponding part of the WSDL looks like:


 http://www.w3.org/2001/XMLSchema";>
  http://hib.ecommerce.foobar.com"/>
  namespace="http://portal01.foobar.com:8080/axis/services/ClaimsData"/>

  http://dao.ecommerce.foobar.com"/>
  http://beans.ecommerce.foobar.com"/>
  http://schemas.xmlsoap.org/soap/encoding/"/>
  
   








type="xsd:string"/>
  





   
  
  
   
  
 

What makes me think the serialization isn't working is that the
definition of the InvalidDateException is pretty much empty. However, 
it also looks like there's enough information in the passed soap 
message to be able to deserialize the exception properly, so I don't 
really know what's going on here.


Do you (or anybody) have an example of what a "good" soap fault mapped
from a java exception looks like?

Thanks.

-Jack


Thom Hehl wrote:



Hmmm. Check your SOAP messae. Our problem is that we're sending the
correct data from the server and the error happens during 
deserialization. If that's not it, it's a different problem.


Jack Lund wrote:

  

Thanks! I'd love to hear the workaround - I've tried everything I
can. It looks like the problem is that the server side doesn't 
really know how to serialize the exception, even though 

RE: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body - Found word(s) check out in the subject

2006-04-05 Thread Veprinsky, Michael
Hello!
I decided to piggy-back on this thread... I am having similar problems.

Thom,
What did you mean? I suppose recommend changing WSDL definition but a)
my WSDL is auto-published so I can't really change it and b) even if I
do, it does not change the XML that server generates and that is totally
language-specific which kinda violates the purpose. Or did you mean
something else?

I am using Axis 1.3. I have following questions:
1) Is there a way to set server to use SOAP 1.2 (RTFMs are welcome, just
tell where)?
2) Is there a way to specify custom values for faultcode/faultstring?
Best I could get was my exception being serialized into XML under
details but then I have to process it as XML :-\
3) Overall, I need to publish a web service that is going to be used
from different platforms. Is my best bet to just give up faults
altogether and use some custom base result structure with generic error
passing engine? Any recommendations (again, RTFMs are welcome)

I do not expect much success since the envelope XSD itself is pretty
limiting (http://schemas.xmlsoap.org/soap/envelope, toward the end),
it's just those two fields and freeform XML "details". SOAP 1.2 looks a
little better but without documentation it did not help much either.

Any recommendations/insights are welcome.
Thank you,
-Michael

___
Tell a man there are 300 billion stars in the universe and he'll believe
Tell him a bench has wet paint on it and he'll have to touch to be sure
  -- /usr/bin/fortune


-Original Message-
From: Thom Hehl [mailto:[EMAIL PROTECTED] 
Sent: Thursday, March 30, 2006 1:47 PM
To: axis-user@ws.apache.org
Subject: Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions
to work - Found word(s) check out in the Text body - Found word(s) check
out in the subject


Have a look at this:

Give him This:
_original type def from imported xsd___
  
   
  

_also needed in wsdl file___




*(in the portType operation definition for a method throwing a fault)*


*(in the binding operation definintion for a method throwing a fault)*






Jack Lund wrote:

> See, I'm not really sure. The JAX/RPC spec is kinda hazy on how
> exceptions are handled, and how the soap fault maps to an exception. 
> Here's what I'm seeing come back from the server:
>
> 
>  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>
>
>soapenv:Server.userException
>com.foobar.ecommerce.beans.InvalidDateException: A

> valid date must be specified in the form of MM/DD/.
>
> xsi:type="ns1:InvalidDateException" xmlns:ns1="urn:ClaimsData"/>
>
xmlns:ns2="http://xml.apache.org/axis/";>staportal01.stratarc.net 
>
>
>
>
> 
>
> And here's what the corresponding part of the WSDL looks like:
>
> 
>   xmlns="http://www.w3.org/2001/XMLSchema";>
>   http://hib.ecommerce.foobar.com"/>
>namespace="http://portal01.foobar.com:8080/axis/services/ClaimsData"/>
>   http://dao.ecommerce.foobar.com"/>
>   http://beans.ecommerce.foobar.com"/>
>   http://schemas.xmlsoap.org/soap/encoding/"/>
>   
>
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>
>   
>   
>
>   
>  
>
> What makes me think the serialization isn't working is that the
> definition of the InvalidDateException is pretty much empty. However, 
> it also looks like there's enough information in the passed soap 
> message to be able to deserialize the exception properly, so I don't 
> really know what's going on here.
>
> Do you (or anybody) have an example of what a "good" soap fault mapped
> from a java exception looks like?
>
> Thanks.
>
> -Jack
>
>
> Thom Hehl wrote:
>
>> Hmmm. Check your SOAP messae. Our problem is that we're sending the
>> correct data from the server and the error happens during 
>> deserialization. If that's not it, it's a different problem.
>>
>> Jack Lund wrote:
>>
>>> Thanks! I'd love to hear the workaround - I've tried everything I
>>> can. It looks like the problem is that the server side doesn't 
>>> really know how to serialize the exception, even though it should.
>>>
>>> -Jack
>>>
>>> Thom Hehl wrote:
>>>
>>>> We had EXACTLY the same problem! We just found it and found a
>>>> work-aroun

Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body - Found word(s) check out in the subject

2006-03-30 Thread Thom Hehl
o extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions 
sent by my service thrown to the client. For instance, my 
service can throw an "InvalidDateException" exception, which 
is a subclass of java.lang.Exception, and I want the client 
code to get that exception. What little is said on the axis 
website about this implies that it should "just work", but it 
doesn't seem to - what I get on the other side is an AxisFault 
with the message string from my exception embedded inside.


Is there something special I have to do, on either side, to 
get this to work?


Thanks.

-Jack








_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/





_
Express yourself instantly with MSN Messenger! Download today - 
it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/













Re: [SPAM] - Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body - Found word(s) check out in the subject

2006-03-30 Thread Jack Lund
See, I'm not really sure. The JAX/RPC spec is kinda hazy on how 
exceptions are handled, and how the soap fault maps to an exception. 
Here's what I'm seeing come back from the server:



xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

   
   
   soapenv:Server.userException
   com.foobar.ecommerce.beans.InvalidDateException: A 
valid date must be specified in the form of MM/DD/.

   
   xsi:type="ns1:InvalidDateException" xmlns:ns1="urn:ClaimsData"/>
   xmlns:ns2="http://xml.apache.org/axis/";>staportal01.stratarc.net

   
   
   


And here's what the corresponding part of the WSDL looks like:


 http://www.w3.org/2001/XMLSchema";>
  http://hib.ecommerce.foobar.com"/>
  http://portal01.foobar.com:8080/axis/services/ClaimsData"/>
  http://dao.ecommerce.foobar.com"/>
  http://beans.ecommerce.foobar.com"/>
  http://schemas.xmlsoap.org/soap/encoding/"/>
  
   











   
  
  
   
  
 

What makes me think the serialization isn't working is that the 
definition of the InvalidDateException is pretty much empty. However, it 
also looks like there's enough information in the passed soap message to 
be able to deserialize the exception properly, so I don't really know 
what's going on here.


Do you (or anybody) have an example of what a "good" soap fault mapped 
from a java exception looks like?


Thanks.

-Jack


Thom Hehl wrote:

Hmmm. Check your SOAP messae. Our problem is that we're sending the 
correct data from the server and the error happens during 
deserialization. If that's not it, it's a different problem.


Jack Lund wrote:

Thanks! I'd love to hear the workaround - I've tried everything I 
can. It looks like the problem is that the server side doesn't really 
know how to serialize the exception, even though it should.


-Jack

Thom Hehl wrote:

We had EXACTLY the same problem! We just found it and found a 
work-around, but believe this to be a bug in AXIS that should be 
fixed. The guy on our team that found it was going to write 
something up for the list. I'll ask him to step this up a bit as it 
would be of benefit to you.


Jack Lund wrote:

Yeah, I can see that that would be easier. Unfortunately, I have no 
control over the exceptions being thrown - I just need the 
client-side to be able to catch them *as* the exceptions that are 
originally thrown. I also am doing dynamic proxying rather than 
stubs/skeletons, so it makes it that more complicated.


>From the debugging I've been able to do, it looks like the fault 
coming across contains the fully-qualified package name of the 
exception class, but for some reason on the client side it's not 
creating the exception. Since this is an area where there's 
practically no documentation, I'm finding myself pretty much 
randomly trying different things and seeing if they work.


The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception that is not an 
instance or a subclass of java.rmi.RemoteException, then things are 
subtly different. The exception is no longer a SOAP Fault, but 
described as a wsdl:fault in the WSDL of the method. According to 
the JAX-RPC specification, your subclass of Exception must have 
accessor methods to access all the fields in the object to be 
marshalled /and/ a constructor that takes as parameters all the 
same fields (i.e, arguments of the same name and type). This is a 
kind of immutable variant of a normal JavaBean 
<http://java.sun.com/products/javabeans>. The fields in the object 
must be of the datatypes that can be reliably mapped into WSDL.


If your exception meets this specification, then the WSDL 
describing the method will describe the exception too, enabling 
callers to create stub implementations of the exception, regardless 
of platform."


I was kind of hoping someone else out there would have had some 
experience with getting this to work.


-Jack

Jarmo Doc wrote:

I have an Axis client stub which was generated from WSDL. *All* of 
the client-side user-defined exceptions extend 
org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateExcepti

Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body

2006-03-30 Thread Thom Hehl
Hmmm. Check your SOAP messae. Our problem is that we're sending the 
correct data from the server and the error happens during 
deserialization. If that's not it, it's a different problem.


Jack Lund wrote:

Thanks! I'd love to hear the workaround - I've tried everything I can. 
It looks like the problem is that the server side doesn't really know 
how to serialize the exception, even though it should.


-Jack

Thom Hehl wrote:

We had EXACTLY the same problem! We just found it and found a 
work-around, but believe this to be a bug in AXIS that should be 
fixed. The guy on our team that found it was going to write something 
up for the list. I'll ask him to step this up a bit as it would be of 
benefit to you.


Jack Lund wrote:

Yeah, I can see that that would be easier. Unfortunately, I have no 
control over the exceptions being thrown - I just need the 
client-side to be able to catch them *as* the exceptions that are 
originally thrown. I also am doing dynamic proxying rather than 
stubs/skeletons, so it makes it that more complicated.


>From the debugging I've been able to do, it looks like the fault 
coming across contains the fully-qualified package name of the 
exception class, but for some reason on the client side it's not 
creating the exception. Since this is an area where there's 
practically no documentation, I'm finding myself pretty much 
randomly trying different things and seeing if they work.


The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception that is not an 
instance or a subclass of java.rmi.RemoteException, then things are 
subtly different. The exception is no longer a SOAP Fault, but 
described as a wsdl:fault in the WSDL of the method. According to 
the JAX-RPC specification, your subclass of Exception must have 
accessor methods to access all the fields in the object to be 
marshalled /and/ a constructor that takes as parameters all the same 
fields (i.e, arguments of the same name and type). This is a kind of 
immutable variant of a normal JavaBean 
<http://java.sun.com/products/javabeans>. The fields in the object 
must be of the datatypes that can be reliably mapped into WSDL.


If your exception meets this specification, then the WSDL describing 
the method will describe the exception too, enabling callers to 
create stub implementations of the exception, regardless of platform."


I was kind of hoping someone else out there would have had some 
experience with getting this to work.


-Jack

Jarmo Doc wrote:

I have an Axis client stub which was generated from WSDL. *All* of 
the client-side user-defined exceptions extend 
org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions 
sent by my service thrown to the client. For instance, my 
service can throw an "InvalidDateException" exception, which is 
a subclass of java.lang.Exception, and I want the client code to 
get that exception. What little is said on the axis website 
about this implies that it should "just work", but it doesn't 
seem to - what I get on the other side is an AxisFault with the 
message string from my exception embedded inside.


Is there something special I have to do, on either side, to get 
this to work?


Thanks.

-Jack






_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/





_
Express yourself instantly with MSN Messenger! Download today - 
it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/









Re: [SPAM] - Re: Problems getting user exceptions to work - Found word(s) check out in the Text body

2006-03-30 Thread Jack Lund
Thanks! I'd love to hear the workaround - I've tried everything I can. 
It looks like the problem is that the server side doesn't really know 
how to serialize the exception, even though it should.


-Jack

Thom Hehl wrote:

We had EXACTLY the same problem! We just found it and found a 
work-around, but believe this to be a bug in AXIS that should be 
fixed. The guy on our team that found it was going to write something 
up for the list. I'll ask him to step this up a bit as it would be of 
benefit to you.


Jack Lund wrote:

Yeah, I can see that that would be easier. Unfortunately, I have no 
control over the exceptions being thrown - I just need the 
client-side to be able to catch them *as* the exceptions that are 
originally thrown. I also am doing dynamic proxying rather than 
stubs/skeletons, so it makes it that more complicated.


>From the debugging I've been able to do, it looks like the fault 
coming across contains the fully-qualified package name of the 
exception class, but for some reason on the client side it's not 
creating the exception. Since this is an area where there's 
practically no documentation, I'm finding myself pretty much randomly 
trying different things and seeing if they work.


The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception that is not an 
instance or a subclass of java.rmi.RemoteException, then things are 
subtly different. The exception is no longer a SOAP Fault, but 
described as a wsdl:fault in the WSDL of the method. According to the 
JAX-RPC specification, your subclass of Exception must have accessor 
methods to access all the fields in the object to be marshalled /and/ 
a constructor that takes as parameters all the same fields (i.e, 
arguments of the same name and type). This is a kind of immutable 
variant of a normal JavaBean 
<http://java.sun.com/products/javabeans>. The fields in the object 
must be of the datatypes that can be reliably mapped into WSDL.


If your exception meets this specification, then the WSDL describing 
the method will describe the exception too, enabling callers to 
create stub implementations of the exception, regardless of platform."


I was kind of hoping someone else out there would have had some 
experience with getting this to work.


-Jack

Jarmo Doc wrote:

I have an Axis client stub which was generated from WSDL. *All* of 
the client-side user-defined exceptions extend 
org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions 
sent by my service thrown to the client. For instance, my service 
can throw an "InvalidDateException" exception, which is a 
subclass of java.lang.Exception, and I want the client code to 
get that exception. What little is said on the axis website about 
this implies that it should "just work", but it doesn't seem to - 
what I get on the other side is an AxisFault with the message 
string from my exception embedded inside.


Is there something special I have to do, on either side, to get 
this to work?


Thanks.

-Jack





_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/





_
Express yourself instantly with MSN Messenger! Download today - it's 
FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/







Re: Problems getting user exceptions to work

2006-03-30 Thread Thom Hehl
We had EXACTLY the same problem! We just found it and found a 
work-around, but believe this to be a bug in AXIS that should be fixed. 
The guy on our team that found it was going to write something up for 
the list. I'll ask him to step this up a bit as it would be of benefit 
to you.


Jack Lund wrote:

Yeah, I can see that that would be easier. Unfortunately, I have no 
control over the exceptions being thrown - I just need the client-side 
to be able to catch them *as* the exceptions that are originally 
thrown. I also am doing dynamic proxying rather than stubs/skeletons, 
so it makes it that more complicated.


>From the debugging I've been able to do, it looks like the fault 
coming across contains the fully-qualified package name of the 
exception class, but for some reason on the client side it's not 
creating the exception. Since this is an area where there's 
practically no documentation, I'm finding myself pretty much randomly 
trying different things and seeing if they work.


The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception that is not an 
instance or a subclass of java.rmi.RemoteException, then things are 
subtly different. The exception is no longer a SOAP Fault, but 
described as a wsdl:fault in the WSDL of the method. According to the 
JAX-RPC specification, your subclass of Exception must have accessor 
methods to access all the fields in the object to be marshalled /and/ 
a constructor that takes as parameters all the same fields (i.e, 
arguments of the same name and type). This is a kind of immutable 
variant of a normal JavaBean <http://java.sun.com/products/javabeans>. 
The fields in the object must be of the datatypes that can be reliably 
mapped into WSDL.


If your exception meets this specification, then the WSDL describing 
the method will describe the exception too, enabling callers to create 
stub implementations of the exception, regardless of platform."


I was kind of hoping someone else out there would have had some 
experience with getting this to work.


-Jack

Jarmo Doc wrote:

I have an Axis client stub which was generated from WSDL. *All* of 
the client-side user-defined exceptions extend 
org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions 
sent by my service thrown to the client. For instance, my service 
can throw an "InvalidDateException" exception, which is a subclass 
of java.lang.Exception, and I want the client code to get that 
exception. What little is said on the axis website about this 
implies that it should "just work", but it doesn't seem to - what 
I get on the other side is an AxisFault with the message string 
from my exception embedded inside.


Is there something special I have to do, on either side, to get 
this to work?


Thanks.

-Jack




_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/





_
Express yourself instantly with MSN Messenger! Download today - it's 
FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/





Re: Problems getting user exceptions to work

2006-03-29 Thread Dies Koper

Hello Jack,

I'm afraid I've always used stubs and am not sure how things work in the 
case of DII. I naively assumed one would still use generated classes 
(except for the stubs).


I reread the section in the JAX-RPC spec and javadoc about it, and this 
is what I'd expect to happen.
DII is for when you dynamically call methods, i.e. you do not know the 
operation names, parameters, etc. at compile time. This also means you 
would not know what faults might get thrown.


The javadoc explains that the Call.invoke methods throw a 
SOAPFaultException in case of SOAP faults, and a 
java.rmi.RemoteException in case of "any error in the remote method 
invocation".
I.e. all checked exceptions that you throw from your endpoint's methods 
get mapped to these exceptions. The SOAPFaultException class has methods 
to get information about the actual fault that occurred.


You get a RemoteException (AxisFault instance)?
I would expect "error in the invocation" to mean errors in calling the 
method, communication related. Maybe the Axis developer sees user 
exceptions as "errors in the invocation" and throws a RemoteException 
instead of a SOAPFaultException?


You could try raising this issue on the axis-developers ML. 
Unfortunately, such questions often do not get replied :(


At least I think I understand (and maybe share) part of your frustration 
now.


Good luck,
Dies


Jack Lund wrote:
Thanks for taking the time to answer me so thoroughly. I really, really 
appreciate it.


Dies Koper wrote:

I am not sure about meaning of "The exception is no longer a SOAP 
Fault" in your quote of the User's Guide, as a fault described in the 
WSDL is still a SOAP fault when it is included in the SOAP body.


I do not think I contradicted anything in the quote. It refers to the 
JAX-RPC 1.1 spec. I also got my information from there, so you should 
just be seeing different ways of saying the same.


Well, from the quote, it looks like they're saying that all you need to 
do to pass exceptions is a) inherit from Exception, and b) be a javabean 
whose fields are wsdl-able datatypes. It never mentions that you have to 
inherit from AxisFault.


As you have probably noticed, in this mailing list the recommended 
approach with Axis seems to be to start with the WSDL (maybe the first 
draft generated by Java2WSDL). You tweak the WSDL into the service you 
want, and develop the client and server implementations from there.
Axis also allows you to take a different approach, but I would not be 
surprised if there are more bugs on that path.


I still do not understand whether you delete the generated exceptions 
and use your own. 


I don't generate exceptions at all. I never do Java2WSDL or WSDL2Java. 
The service class, data and exceptions are all standard Java classes.


Do you want to discuss the validity of Axis's implementation or get 
your problem solved? I'm fine with either, just want to know how to 
answer.


I apologize for my frustration level. I have no problems with Axis's 
implementation - what I've been able to see of it is really, really 
great. My only problem is the lack of documentation, especially in an 
area as fundamental as exception handling.


Please look at the generated interface, javabeans and exception 
classes as not being part of your client, but part of Axis's 
WSDL->Java mapping.
Your client class does not need to have any dependencies on axis 
classes. Just catch the InvalidDateException and don't care whether it 
extends AxisFault internally. It is just a generated class that would 
be regenerated anyway if you would use a different SOAP engine.


I think that's the disconnect we're having here. I'm not generating 
anything, nor am I interested in generating anything. From what I've 
been able to see, Axis provides me with the ability to drop a standard 
Java class into its container, without having to do any code generation, 
and it will automatically create the service. I've already taken 
advantage of that, and it works great. Unfortunately, it doesn't seem to 
handle exceptions the same way, which is why I was so confused. What you 
seem to be saying is that I have to generate the code from the WSDL (or, 
alternatively, generate the WSDL from the java class and then generate 
the client and exceptions from the WSDL) in order to have exception 
handling. Unfortunately, that's not something I can do, because of the 
architectural and technical constraints of the project.


I can write something which intercepts the exceptions before they get to 
Axis on the server side, and wrap them in an AxisFault, but it will be 
an enormous pain. I was hoping that Axis would do that. They're 
obviously already catching exceptions on the server side, and I was 
hoping that they would just serialize it just as they would any other 
class going across the wire, which is what I thought that section in the 
user's guide was saying. Unfortunately, it sounds like this isn't the case.



3) There is no number 3. ;-)


Re: Problems getting user exceptions to work

2006-03-29 Thread Jack Lund
Thanks for taking the time to answer me so thoroughly. I really, really 
appreciate it.


Dies Koper wrote:

I am not sure about meaning of "The exception is no longer a SOAP 
Fault" in your quote of the User's Guide, as a fault described in the 
WSDL is still a SOAP fault when it is included in the SOAP body.


I do not think I contradicted anything in the quote. It refers to the 
JAX-RPC 1.1 spec. I also got my information from there, so you should 
just be seeing different ways of saying the same.


Well, from the quote, it looks like they're saying that all you need to 
do to pass exceptions is a) inherit from Exception, and b) be a javabean 
whose fields are wsdl-able datatypes. It never mentions that you have to 
inherit from AxisFault.


As you have probably noticed, in this mailing list the recommended 
approach with Axis seems to be to start with the WSDL (maybe the first 
draft generated by Java2WSDL). You tweak the WSDL into the service you 
want, and develop the client and server implementations from there.
Axis also allows you to take a different approach, but I would not be 
surprised if there are more bugs on that path.


I still do not understand whether you delete the generated exceptions 
and use your own. 


I don't generate exceptions at all. I never do Java2WSDL or WSDL2Java. 
The service class, data and exceptions are all standard Java classes.


Do you want to discuss the validity of Axis's implementation or get 
your problem solved? I'm fine with either, just want to know how to 
answer.


I apologize for my frustration level. I have no problems with Axis's 
implementation - what I've been able to see of it is really, really 
great. My only problem is the lack of documentation, especially in an 
area as fundamental as exception handling.


Please look at the generated interface, javabeans and exception 
classes as not being part of your client, but part of Axis's 
WSDL->Java mapping.
Your client class does not need to have any dependencies on axis 
classes. Just catch the InvalidDateException and don't care whether it 
extends AxisFault internally. It is just a generated class that would 
be regenerated anyway if you would use a different SOAP engine.


I think that's the disconnect we're having here. I'm not generating 
anything, nor am I interested in generating anything. From what I've 
been able to see, Axis provides me with the ability to drop a standard 
Java class into its container, without having to do any code generation, 
and it will automatically create the service. I've already taken 
advantage of that, and it works great. Unfortunately, it doesn't seem to 
handle exceptions the same way, which is why I was so confused. What you 
seem to be saying is that I have to generate the code from the WSDL (or, 
alternatively, generate the WSDL from the java class and then generate 
the client and exceptions from the WSDL) in order to have exception 
handling. Unfortunately, that's not something I can do, because of the 
architectural and technical constraints of the project.


I can write something which intercepts the exceptions before they get to 
Axis on the server side, and wrap them in an AxisFault, but it will be 
an enormous pain. I was hoping that Axis would do that. They're 
obviously already catching exceptions on the server side, and I was 
hoping that they would just serialize it just as they would any other 
class going across the wire, which is what I thought that section in the 
user's guide was saying. Unfortunately, it sounds like this isn't the case.



3) There is no number 3. ;-)



Maybe later? :)


You never know. :)

It doesn't make much sense to me that axis would have this wonderful 
mechanism whereby we can install a fairly arbitrary Java class and 
turn it magically into a web service...unless you throw exceptions, 
in which case all bets are off. Of course, I've been wrong before.



I am wondering whether you just ran into a bug or expect something 
from Axis that it was not designed to do.


Don't know. I guess we may never know - unless I stumble on the solution 
randomly. Weirder stuff has happened before.


Thanks again for taking the time to answer my questions.

Jack


Re: Problems getting user exceptions to work

2006-03-29 Thread Dies Koper
I am not sure about meaning of "The exception is no longer a SOAP Fault" 
in your quote of the User's Guide, as a fault described in the WSDL is 
still a SOAP fault when it is included in the SOAP body.


I do not think I contradicted anything in the quote. It refers to the 
JAX-RPC 1.1 spec. I also got my information from there, so you should 
just be seeing different ways of saying the same.


As you have probably noticed, in this mailing list the recommended 
approach with Axis seems to be to start with the WSDL (maybe the first 
draft generated by Java2WSDL). You tweak the WSDL into the service you 
want, and develop the client and server implementations from there.
Axis also allows you to take a different approach, but I would not be 
surprised if there are more bugs on that path.


I still do not understand whether you delete the generated exceptions 
and use your own. Do you want to discuss the validity of Axis's 
implementation or get your problem solved? I'm fine with either, just 
want to know how to answer.


What I'm trying to do is this: We've got a service, which is basically a 
POJO (i.e. no axis-isms or web service-isms) that we're deploying using 
wsdd (a minimal wsdd) without generating WSDL or any of that. On the 
client side, I'm creating a dynamic proxy which uses the sample code 
example to parse the axis-generated WSDL (the one you get from 
http://foo.com/axis/service/myService?wsdl) and figure out how to call 
the method and get everything back. Everything works just fine except 
for exceptions.


The WSDL looks fine to me. I do not think it needs editing.


I'd rather not extend AxisFault for a couple of reasons:

1) My service right now has no knowledge that it's running within Axis, 
or even that it's a web service. I'd like to keep it that way


Please look at the generated interface, javabeans and exception classes 
as not being part of your client, but part of Axis's WSDL->Java mapping.
Your client class does not need to have any dependencies on axis 
classes. Just catch the InvalidDateException and don't care whether it 
extends AxisFault internally. It is just a generated class that would be 
regenerated anyway if you would use a different SOAP engine.


2) My client may be accessing web services which aren't in my control. I 
can't assume that they're going to throw exceptions which inherit from 
AxisFault.


If you choose to use Axis DII or stubs, then they will. But your client 
does not need to know.



3) There is no number 3. ;-)


Maybe later? :)

It doesn't make much sense to me that axis would have this wonderful 
mechanism whereby we can install a fairly arbitrary Java class and turn 
it magically into a web service...unless you throw exceptions, in which 
case all bets are off. Of course, I've been wrong before.


I am wondering whether you just ran into a bug or expect something from 
Axis that it was not designed to do.


Regards,
Dies



Re: Problems getting user exceptions to work

2006-03-29 Thread Jack Lund
 fully-qualified package name of the 
exception class, but for some reason on the client side it's not 
creating the exception. Since this is an area where there's 
practically no documentation, I'm finding myself pretty much randomly 
trying different things and seeing if they work.


The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception that is not an 
instance or a subclass of java.rmi.RemoteException, then things are 
subtly different. The exception is no longer a SOAP Fault, but 
described as a wsdl:fault in the WSDL of the method. According to the 
JAX-RPC specification, your subclass of Exception must have accessor 
methods to access all the fields in the object to be marshalled /and/ 
a constructor that takes as parameters all the same fields (i.e, 
arguments of the same name and type). This is a kind of immutable 
variant of a normal JavaBean 
<http://java.sun.com/products/javabeans>. The fields in the object 
must be of the datatypes that can be reliably mapped into WSDL.


If your exception meets this specification, then the WSDL describing 
the method will describe the exception too, enabling callers to 
create stub implementations of the exception, regardless of platform."


I was kind of hoping someone else out there would have had some 
experience with getting this to work.


-Jack

Jarmo Doc wrote:

I have an Axis client stub which was generated from WSDL.  *All* of 
the client-side user-defined exceptions extend 
org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions 
sent by my service thrown to the client. For instance, my service 
can throw an "InvalidDateException" exception, which is a 
subclass of java.lang.Exception, and I want the client code to 
get that exception. What little is said on the axis website about 
this implies that it should "just work", but it doesn't seem to - 
what I get on the other side is an AxisFault with the message 
string from my exception embedded inside.


Is there something special I have to do, on either side, to get 
this to work?


Thanks.

-Jack








Re: Problems getting user exceptions to work

2006-03-29 Thread Dies Koper

Hello Jack,

As Jarmo pointed out, all client-side (generated) exceptions extend 
AxisFault. Are you not using the generated exceptions?
The WSDL defines the interface, including the faults. Either you let 
Axis do the mapping to Java using its own generated classes, or you do 
not. I don't think Axis could do its job without them.


There is no need to catch an AxisFault first and then doing an 
instanceof. Jarmo must have written that code before he had his coffee ;)
Your client does not (and should not) need to know that AxisFault is 
being used internally.


Could you show us the WSDL that defines your fault (complexType + 
, etc.), the SOAP response containing the fault, and the code 
you use to catch the exception?


Regards,
Dies

Jack Lund wrote:
Yeah, I can see that that would be easier. Unfortunately, I have no 
control over the exceptions being thrown - I just need the client-side 
to be able to catch them *as* the exceptions that are originally thrown. 
I also am doing dynamic proxying rather than stubs/skeletons, so it 
makes it that more complicated.


 From the debugging I've been able to do, it looks like the fault coming 
across contains the fully-qualified package name of the exception class, 
but for some reason on the client side it's not creating the exception. 
Since this is an area where there's practically no documentation, I'm 
finding myself pretty much randomly trying different things and seeing 
if they work.


The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception that is not an instance 
or a subclass of java.rmi.RemoteException, then things are subtly 
different. The exception is no longer a SOAP Fault, but described as a 
wsdl:fault in the WSDL of the method. According to the JAX-RPC 
specification, your subclass of Exception must have accessor methods to 
access all the fields in the object to be marshalled /and/ a constructor 
that takes as parameters all the same fields (i.e, arguments of the same 
name and type). This is a kind of immutable variant of a normal JavaBean 
<http://java.sun.com/products/javabeans>. The fields in the object must 
be of the datatypes that can be reliably mapped into WSDL.


If your exception meets this specification, then the WSDL describing the 
method will describe the exception too, enabling callers to create stub 
implementations of the exception, regardless of platform."


I was kind of hoping someone else out there would have had some 
experience with getting this to work.


-Jack

Jarmo Doc wrote:

I have an Axis client stub which was generated from WSDL.  *All* of 
the client-side user-defined exceptions extend org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to 
interop with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a 
subclass of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions sent 
by my service thrown to the client. For instance, my service can 
throw an "InvalidDateException" exception, which is a subclass of 
java.lang.Exception, and I want the client code to get that 
exception. What little is said on the axis website about this 
implies that it should "just work", but it doesn't seem to - what I 
get on the other side is an AxisFault with the message string from 
my exception embedded inside.


Is there something special I have to do, on either side, to get 
this to work?


Thanks.

-Jack





RE: Problems getting user exceptions to work

2006-03-29 Thread Jack Lund




Yeah, I can see that that would be easier. Unfortunately, I have no
control over the exceptions being thrown - I just need the client-side
to be able to catch them *as* the exceptions that are originally
thrown. I also am doing dynamic proxying rather than stubs/skeletons,
so it makes it that more complicated.

>From the debugging I've been able to do, it looks like the fault coming
across contains the fully-qualified package name of the exception
class, but for some reason on the client side it's not creating the
exception. Since this is an area where there's practically no
documentation, I'm finding myself pretty much randomly trying different
things and seeing if they work.

The user's guide is really vague about this subject:

"If a method is marked as throwing an Exception
that is not an instance or a subclass of java.rmi.RemoteException,
then things are subtly different. The exception is no longer a SOAP
Fault, but described as a wsdl:fault
in the WSDL of the method. According to the JAX-RPC specification, your
subclass of Exception must have accessor methods to access all the
fields in the object to be marshalled and a constructor that
takes as parameters all the same fields (i.e, arguments of the same
name and type). This is a kind of immutable variant of a normal JavaBean. The fields
in the object must be of the datatypes that can be reliably mapped into
WSDL.
If your exception meets this specification, then the WSDL describing
the method will describe the exception too, enabling callers to create
stub implementations of the exception, regardless of platform."

I was kind of hoping someone else out there would have had some
experience with getting this to work.

-Jack

Jarmo Doc wrote:
I have an Axis client stub which was generated from WSDL. 
*All* of the client-side user-defined exceptions extend
org.apache.axis.AxisFault.
  
  
The equivalent exceptions at the server also extend
org.apache.axis.AxisFault, rather than Exception.
  
  
This is a decidedly dodgy area, imo, especially when it comes to
interop with non-Axis clients.
  
  
  
  From: Jack Lund <[EMAIL PROTECTED]>

Reply-To: axis-user@ws.apache.org
    
To: axis-user@ws.apache.org

Subject: RE: Problems getting user exceptions to work

Date: Wed, 29 Mar 2006 14:51:47 -0600


Nope, didn't work. Wouldn't think it would - AxisFault isn't a subclass
of InvalidDateException.


-Jack


Jarmo Doc wrote:


Try doing this:
  
  
catch (AxisFault ex)
  
{
  
if (ex instanceof InvalidDateException)
  
{
  
InvalidDateException myex = (InvalidDateException)ex;
  
// deal with myex here
  
}
  
// deal with others here
  
}
  
  
  
  From: Jack Lund
<[EMAIL PROTECTED]>

Reply-To: axis-user@ws.apache.org

To: axis-user@ws.apache.org

Subject: Problems getting user exceptions to work

Date: Wed, 29 Mar 2006 12:21:33 -0600


Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions sent by
my service thrown to the client. For instance, my service can throw an
"InvalidDateException" exception, which is a subclass of
java.lang.Exception, and I want the client code to get that exception.
What little is said on the axis website about this implies that it
should "just work", but it doesn't seem to - what I get on the other
side is an AxisFault with the message string from my exception embedded
inside.


Is there something special I have to do, on either side, to get this to
work?


Thanks.


-Jack

  
  
  
_
  
Don’t just search. Find. Check out the new MSN Search!
http://search.msn.click-url.com/go/onm00200636ave/direct/01/
  
  
  

  
  
_
  
Express yourself instantly with MSN Messenger! Download today - it's
FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
  
  
  





RE: Problems getting user exceptions to work

2006-03-29 Thread Jarmo Doc
I have an Axis client stub which was generated from WSDL.  *All* of the 
client-side user-defined exceptions extend org.apache.axis.AxisFault.


The equivalent exceptions at the server also extend 
org.apache.axis.AxisFault, rather than Exception.


This is a decidedly dodgy area, imo, especially when it comes to interop 
with non-Axis clients.




From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: RE: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 14:51:47 -0600

Nope, didn't work. Wouldn't think it would - AxisFault isn't a subclass of 
InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions sent by my 
service thrown to the client. For instance, my service can throw an 
"InvalidDateException" exception, which is a subclass of 
java.lang.Exception, and I want the client code to get that exception. 
What little is said on the axis website about this implies that it should 
"just work", but it doesn't seem to - what I get on the other side is an 
AxisFault with the message string from my exception embedded inside.


Is there something special I have to do, on either side, to get this to 
work?


Thanks.

-Jack



_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/





_
Express yourself instantly with MSN Messenger! Download today - it's FREE! 
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/




RE: Problems getting user exceptions to work

2006-03-29 Thread Jack Lund
Nope, didn't work. Wouldn't think it would - AxisFault isn't a subclass 
of InvalidDateException.


-Jack

Jarmo Doc wrote:


Try doing this:

catch (AxisFault ex)
{
if (ex instanceof InvalidDateException)
{
InvalidDateException myex = (InvalidDateException)ex;
// deal with myex here
}
// deal with others here
}



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions sent 
by my service thrown to the client. For instance, my service can 
throw an "InvalidDateException" exception, which is a subclass of 
java.lang.Exception, and I want the client code to get that 
exception. What little is said on the axis website about this implies 
that it should "just work", but it doesn't seem to - what I get on 
the other side is an AxisFault with the message string from my 
exception embedded inside.


Is there something special I have to do, on either side, to get this 
to work?


Thanks.

-Jack



_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/





RE: Problems getting user exceptions to work

2006-03-29 Thread Jarmo Doc

Try doing this:

   catch (AxisFault ex)
   {
 if (ex instanceof InvalidDateException)
 {
   InvalidDateException myex = (InvalidDateException)ex;
   // deal with myex here
 }
 // deal with others here
   }



From: Jack Lund <[EMAIL PROTECTED]>
Reply-To: axis-user@ws.apache.org
To: axis-user@ws.apache.org
Subject: Problems getting user exceptions to work
Date: Wed, 29 Mar 2006 12:21:33 -0600

Hi. I'm using axis 1.2.1, and I'm trying to get the exceptions sent by my 
service thrown to the client. For instance, my service can throw an 
"InvalidDateException" exception, which is a subclass of 
java.lang.Exception, and I want the client code to get that exception. What 
little is said on the axis website about this implies that it should "just 
work", but it doesn't seem to - what I get on the other side is an 
AxisFault with the message string from my exception embedded inside.


Is there something special I have to do, on either side, to get this to 
work?


Thanks.

-Jack


_
Don’t just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/