Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对Jersey StreamingOutput调用flush()无效_Jersey_Jax Rs_Jersey 2.0 - Fatal编程技术网

对Jersey StreamingOutput调用flush()无效

对Jersey StreamingOutput调用flush()无效,jersey,jax-rs,jersey-2.0,Jersey,Jax Rs,Jersey 2.0,我使用的是一款JerseyStreamingOutput,它在升级到Jersey 2.16之前一直运行良好。事情是这样的。我的StreamingOut在某些情况下生成输出非常缓慢。我确实定期写数据,但我写得很慢,一次只写一点。每次写入任何字节时,我都会调用传递到StreamingOutput.write()的OutputStream上的flush(),但flush()似乎没有效果。在将8K写入输出流之前,不会通过线路发送任何内容。不幸的是,在某些情况下,在编写8K时,客户端已经超时 我下载了一些

我使用的是一款Jersey
StreamingOutput
,它在升级到Jersey 2.16之前一直运行良好。事情是这样的。我的
StreamingOut
在某些情况下生成输出非常缓慢。我确实定期写数据,但我写得很慢,一次只写一点。每次写入任何字节时,我都会调用传递到
StreamingOutput.write()
OutputStream上的
flush()
,但flush()似乎没有效果。在将8K写入
输出流之前,不会通过线路发送任何内容。不幸的是,在某些情况下,在编写8K时,客户端已经超时

我下载了一些jersey源代码,通过一些调试,我看到传递给
write()
OutputStream
是一个
UnCloseableOutputStream
,它封装了一个
committeingoutstream

committengoutputstream
启用了缓冲,因此在响应提交(完成)之前,flush()本质上是一个no-op


所以,我陷入了困境。如何使用
流输出
(或直接写入输出流)并在整个响应完成之前强制它通过线路发送字节?有没有其他的方法来处理球衣?我在
ResponseBuilder
上找不到执行此操作的任何方法。我找不到任何方法来关闭缓冲。

有Jersey属性来设置缓冲区的大小,但是更改它会影响
内容长度
标题(如果这对您很重要的话)。您应该阅读酒店的文档

一个整数值,定义用于缓冲服务器端响应实体的缓冲区大小,以确定其大小并设置HTTP“Content Length”标头的值

如果实体大小超过配置的缓冲区大小,则将取消缓冲,并且不会确定实体大小。值小于或等于零时,将完全禁用实体的缓冲

此属性可在服务器端用于覆盖出站消息缓冲区大小值-默认值或使用“jersey.config.contentLength.buffer”全局属性设置的全局自定义值

默认值为8192