Interesting test...Milt, what's your opinion on this.  Good effort, in any
event!

Mark

-----Original Message-----
From: Michael Peceny [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, October 08, 2002 7:31 AM

Not quite -- the client and the server are playing a "request-response
game", and when one of the two suddenly quits in the middle of the game, the
other should realize this...

I could imagine that once the client stops waiting for the response (i.e.,
the user hits the cancel button), there is an error on the server when it
attempts to send response data to the client (or is this indistinguishable
from the response data being lost/bogged down somewhere on the net? what
does the client do when the server attempts to send it some response data it
has stopped waiting for? does it send a "don't want your (from my point of
view unrequested) data" back the server?) ... and on to an answer (derived
from a simple test, so it's not necessarily comprehensive or true without
exception):

ok, tested it, and actually there is an exception thrown when the client has
stopped listening. BUT... that exception isn't thrown within the servlet's
doGet() / doPost (), but rather by the servlet engine afterwards.

Example:

public void doPost( HttpServletRequest request, HttpServletResponse response
)
                                        throws ServletException, IOException
{
    response.setContentType( "text/plain" );
    PrintWriter out = response.getWriter();

    try {
      out.write( "Line 1\n\r" );

      // set a breakpoint here and, while the debugger is halted, click on
the
      // browser's STOP/CANCEL button

      out.write( "Line 2" );
      out.flush();
      response.flushBuffer();
// hmm... apparently, the servlet doesn't get told whether the data that is
flushed
// is accepted by the client or not
    } catch ( Exception e ) {
      System.err.println( "Exception: " + e.toString() );
    }

    return;
  }

The catch block doesn't get an exception. But after doPost() is left, the
servlet engine (New Atlanta ServletExec Debugger) reports the following:

Responder.run() caught an IOException 1:Connection reset by peer: socket
write error Most likely the user broke the connection by stopping the
browser.

So, an exception is actually thrown, the server does realize that the client
isn't listening any more (it doesn't tell the servlet, though). But
unfortunately we cannot handle it inside the doPost() method.

___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".

Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html

Reply via email to