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