假设我正在将数据块写入HttpServletResponse。因此,我的方法接收到一个字节数组,将其写入response.getOutputStream(),然后释放线程。当我收到另一数据块时,我的方法将被唤醒,并将再次写入getOutputStream()。最后,我调用AsyncContext.complete()

现在,WriteListener.onWritePossible()规范说:



似乎当容器调用此方法时,我已经需要将响应缓冲在某个地方,因为onWritePossible()可能再也不会被调用。因此,对于前面的示例,我需要将接收到的所有数据块都写入缓冲区(字节数组,如果缓冲区足够大,则可能是一个临时文件),并且如果在响应完成之前调用了onWritePossible(),那我该怎么办?阻塞线程,直到获得所有响应数据?

最佳答案

在以下链接中检查代码。可能不是确切的解决方案,但可以为您的案例提供解决方案:
Servlet 3.1 Async IO Echo

09-26 05:21