Hmmm. This does not seem very satsifactory. I
fully agree that *server code* exceptions should not be propagated back to the
client once a HTTP 202 is received, but anything up to that should generate an
exception. If I want to implement reliable messaging on top of the axis
library (ala WS-ReliableMessaging), how on earth can I detect transport level
problems, such as a in a disconnected "smart" client and implement retries
etc?
However, if you do not accept this argument then I would
point out that OneWay is declared within server-side WSDL, so it seems that the
WSDL2Java utility does not generate client code that uses a "request/response
MEP" as you suggest. (I am an application developer and really don't want
to concern myself with writing transport level, or even SOAP level code,
and hence why I use the WSDL2Java utility).
As a side point, .Net generated one-way proxies at least
report transport level problems that are nothing to do with
SOAP
For what it's worth,
Pete
From: Anne Thomas Manes [mailto:[EMAIL PROTECTED]
Sent: 16 December 2005 20:05
To: axis-user@ws.apache.org; [EMAIL PROTECTED]
Subject: Re: Exception not thrown when server not available using OneWay messages
Anne
On 12/16/05, Peter
McEvoy <[EMAIL PROTECTED]>
wrote:
Hi there,
I have a client that sends OneWay messags to a server - this works fine. However, when the server is not available (down/not listening for HTTP), my client code does not get an exception. Granted, the Axis code _does_ seem to get an exception (java.net.ConnectException), but this does not seem to be re-thrown, so my client code does not know that the async call has actually failed.
I've looked in the archive, and there are some messages about server side exceptions during async calls, and I agree that the client should not know about them - however server unavailable is at a lower level, and the client probably _should_ know about these.
As there something I am missing?
My client code looks like:
try{
service.setEndpointAddress ("PingServiceAsyncBinding", "http://localhost:9998/PingServiceAsync.asmx");
} catch (Exception e){
log.error("Exception setting service endpoint", e);
}
try {
PingServiceAsyncBinding binding = service.getPingServiceAsyncBinding();
log.debug("Sending Ping message...");
binding.pingAsync();
log.debug("Done.");
} catch (Exception e){
log.error("Exception during PingAsync", e);
}
Is there a property I need to set on the locator in order to be notified about exceptions?
Sincerely
Pete