假设我正在将数据块写入HttpServletResponse
. 所以我的方法接收一个字节数组,我把它写到response.getOutputStream()
,然后我释放线程。当我收到另一块数据时,我的方法将被唤醒,它会getOutputStream()
再次写入。最后,我打电话给AsyncContext.complete()
.
现在,WriteListener.onWritePossible()
规范说:
当可以写入数据时,该方法将由容器第一次调用。当且仅当 ServletOutputStream 上的 isReady 方法(如下所述)返回 false 时,容器随后将调用 onWritePossible 方法。
似乎当容器调用此方法时,我已经需要在某处缓冲我的响应,因为onWritePossible()
可能永远不会再被调用。因此,对于前面的示例,我需要将收到的所有数据块写入缓冲区(一个字节数组,或者如果缓冲区足够大,则可能是一个临时文件),如果onWritePossible()
在我的响应完成之前调用,应该我愿意?阻塞线程直到我获得所有响应数据?