• 締切済み

Javaのファイルダウンロードについて

Javaでファイルのダウンロード機能を作成しています。 環境はWebサーバにapache、APサーバにGlassfish、連携としてmod_jk、あとはJava6を使用しています。 InpusStreamでファイルパスから取得しresponse.getOutputStream()に書き込む処理writeにて org.apache.catalina.connector.ClientAbortExceptionが発生してしまいます。 その際にダウンロードのポップアップ(開く、保存、キャンセル)が開きますがExceptionが発生しているため保存できません。 ただしファイルのサイズによっては正常に保存できます。(ファイルサイズが500Mくらいだとダメ) なお、ClientAbortExceptionはキャンセル押したときに発生すると思われますがそのほかにどのような場合に発生するのでしょうか? また、対処方法を知っていましたらご教授ください。

みんなの回答

  • teketon
  • ベストアンサー率65% (141/215)
回答No.3

>ファイルの容量によってapacheやmod_jkが切断することはありえるのでしょうか? やったことがないので知りません。 単純なwrite処理だけだとflushしません。その場合、クライアントからデータが来ないように見えてしまい、 キャンセルしているのではないか?ということです。

参考URL:
http://mergedoc.sourceforge.jp/tomcat-servletapi-5-ja/javax/servlet/ServletResponse.html#getOutputStream()
  • teketon
  • ベストアンサー率65% (141/215)
回答No.2

>org.apache.catalina.connector.ClientAbortException:java.io.IOException: パイプが切断されました。 大きなファイルの送信に時間が掛かり、KeepAliveのTimeoutに到達、そして切断されているのではないでしょうか?

questionHuman
質問者

補足

ファイルのサイズは500Mくらいで大きいですが実際にExceptionが発生するまでの時間は数秒です。 ファイルの容量によってapacheやmod_jkが切断することはありえるのでしょうか?

  • teketon
  • ベストアンサー率65% (141/215)
回答No.1

とりあえず、Exceptionのログを提示して下さい。

questionHuman
質問者

補足

org.apache.catalina.connector.ClientAbortException:java.io.IOException: パイプが切断されました。

関連するQ&A