Tomcat を使用してストリーミング リレー サーバーを構築しました。
簡単なアイデアは、1 つのクライアントが POST を実行し、別のクライアントが GET を実行するというものです。サーブレットは Thread から生成され、(POST からの) InputSteam が空になるまで単純なバイト シャッフルを行います。完了したら、両方のリクエストを閉じて応答します。すべて問題なく、完全に機能しますが、
Tomcat は request オブジェクトと InputStream オブジェクトを再利用しているようです! 10 番目の POST ごとに、既に閉じられているため、InputStream を読み取ることができません。ログを詳しく見てみると、以前のリクエストでまったく同じ InputStream オブジェクトが使用された (したがって閉じられた) ことがわかります。HttpServletRequest オブジェクトもまったく同じであることが判明しました。
ここで何が起こっているのですか?Tomcat が明らかに適切にリセットされていないオブジェクトを再利用しているのはなぜですか? バージョン 7.0.29 と 6.0.16 で試しましたが、同じでした。