ServletResponse

とりあえずメモ。
org.apache.catalina.connector.Response#getOutputStream()
を使って、org.apache.catalina.connector.CoyoteOutputStream()を取得。
CoyoteOutputStream#write()等は、実体としては
org.apache.catalina.connector.OutputBufferを使用。
たとえば、
CoyoteOutputStream#write(byte b)はwrite(byte b, int off, int len)を呼び、
OutputBuffer#write(byte b, int off, int len)を呼んでいる。
更に、OutputBuffer#writeBytes(byte b
, int off, int len)が呼ばれるが、
この段階ではflushはしない。

明示的にCoyoteOutputStream#flush()が呼ばれた場合、
OutputBuffer#flush() → OutputBuffer#doFlush()と呼ばれる。
doFlush()は引数にtrueが指定されるため、即座に書き込まれる。
その際、IOExceptionが起きていると、ClientAbortExceptionが返る。