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

One-way messages do not return exceptions under any circumstances. If you require a notice that a message can't be delivered, then you should use a request/response MEP.

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



Reply via email to