2017-08-15 14 views
1

私はthisを理解しているので、TomcatサーバーがHTTP Multipartリクエストを受信すると、サーブレットはすべてのパートの転送が完了した後にのみ呼び出されます。Tomcat:HTTPマルチパートリクエストが中断された場合はどうなりますか?

転送が途中で中断した場合はどうなりますか? (たとえば、1Gbファイルのアップロード中にクライアントのネットワーク接続が切断された場合など)この場合、いつサーブレットが呼び出されますか?

具体的には、私はいくつかではなく、適切に(おそらく中断された転送から)java.io.InputStreamを閉じて、私のサーブレットの内部を見ることができますが、私は、サーバーにもサーブレットを呼び出す前に不完全としてマルチパートを拒否することを期待しますか?どのように適切に閉じられていないファイルを説明するには? HTTPプロトコルには、不完全な要求を防ぐための制御メカニズムがいくつかあります。 (私はApache Commons FileUploadからorg.apache.commons.fileupload.FileItemを使用しています)

私の質問はJava/Tomcatに固有のものではない場合があります。

+0

サーバーの読み取りタイムアウトが発生し、接続が閉じられます。 – EJP

答えて

0

膨大な量のバグを考慮しても、TomcatがMultipartストリームを閉じるのを忘れたことはありませんが、不可能ではありません。しかし、私の推測では、これはあなたのアプリケーションコードのどこかにあるということです。

通常、クライアントがマルチパートストリームを正しくアップロードできない場合、これはプロトコルレベルでのエラーであり、アプリケーションとは関係がないため、サーバーがそれを処理します。これは、誰かがウェブアドレスを呼び出すが、前半だけが入力された場合とほぼ同じです。答えはその時点で接続を終了することしかできないため、これはすべてサーバーによって処理されます。

関連する問題