私はJersey 2.16にアップグレードするまでは問題なく機能していたJersey StreamingOutput
を使用しています。ここに事がある。私のStreamingOuput
は、状況によっては出力が非常に遅くなります。私は定期的にデータを書きますが、私はそれをかなりゆっくりと少しずつ書きます。私はのOutputStream
をStreamingOutput.write()
に渡すと、バイトを書き込むたびに呼び出されますが、flush()は効果がないようです。 OutputStream
に8Kが書き込まれるまで、ワイヤを介して何も送信されません。残念ながら、状況によっては、8Kが書き込まれるまでにクライアントがタイムアウトしました。Jersey StreamingOutputでflush()を呼び出しても効果がありません
私はジャージのソースの一部をダウンロードし、いくつかのデバッグを通じて、私はwrite()
に渡さOutputStream
がCommittingOutputStream
をラップUnCloseableOutputStream
であることがわかります。
CommittingOutputStream
はバッファリングを有効にしているため、応答がコミット(完了)されるまで、flush()は本質的にno-opです。
だから、私はピクルスにいます。 StreamingOutput
を使用して(または出力ストリームに直接書き込む)、応答全体が完了する前に強制的にワイヤでバイトを送信できますか?ジャージーでこれを行うための他の方法はありますか?これを行うには、私はResponseBuilder
の方法を見つけることができません。私はバッファリングを無効にする方法を見つけることができません。