On 31/12/2013 07:53, 侯树成 wrote:
> Hi, I got an Exception like this:
> 
> java.lang.IllegalStateException: Cannot call sendError() after the response
> has been committed
> 
> 
> I got it in following steps:
> 1. Deploy a web app.
> 2. request the app in browser, refresh the page when it not response
> fully(or close it when the page not response correctly)
> 3. get the exception
> 
> 
> the exception was throw in blow code:
> 
> class OutputBuffer
>  public void realWriteBytes(byte buf[], int off, int cnt) {
>              .....
>                 coyoteResponse.doWrte(outputChunk);   //it will throw
> "java.io.IOException: An established connection was aborted
>                                       //by the software in your host
> machine"
>             } catch (IOException e) {
>                 // An IOException on a write is almost always due to
>                 // the remote client aborting the request.  Wrap this
>                 // so that it can be handled better by the error dispatcher.
>                 throw new ClientAbortException(e);  // it will handled by
> outter code.But now the commit equals true when sendError method execute,
> so
>                        //IllegalStateException will throw.
>             }
>         }
> 
> Does the response will set commit = true when the client close or abort?

No.

Mark

> In source code, I just find the flush method or close method will set
> commit = true, others was correct request/response lifecycle.
> 
> Thanks in advance.
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to