我正在使用apache异步客户端读取http响应。每次我读取一大块数据时,我都希望以非阻塞模式将其写入servletoutputstream。像这样:
// decoder.read is executed when data available for reading
while (decoder.read(this.bbuf) > 0)
{
this.bbuf.flip();
arr = new byte[numbytesread];
this.bbuf.rewind();
this.bbuf.get(arr);
// Blocking write to servletoutputstream 'sos'
this.sos.write(arr);
this.bbuf.compact();
}
显然,即使我将'sos'包装在WritableChannel中,这也不起作用,因为我总是最终得到来自servletoutputstream的bytearrayoutputstream。
所以我应该将一个WriteListener添加到servletoutputstream以切换到nio模式,但是这里出现了我无法解决的问题。如何将我的http回调中的每一块数据传递给writelistener以进行异步和非阻塞?
这可能吗?如果是这样,有人能给我一个关于如何做的线索吗?