[Seasar-user:10494] ダウンロードを IE でキャンセルした際の対応について

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2007年 9月 13日 (木) 10:59:11 JST


お世話になっております。TuMikiです。

CSVファイルのダウンロードで「開く、保存、キャンセル」画面でキャンセルしたとこ
ろ
下のログにあるような「ClientAbortException」となる現象た発生しております。

CSVファイルのダウンロードは、Actionクラスで
	public Class doHoge() {
		// レスポンスにダウンロード用のヘッダー設定を行い
		response.setContentLength((int) size); 
		response.setContentType("text/csv");
		response.setHeader("Content-Disposition","inline;filename=\"" + fileName + "
\"");
		
		//内容を書き出して
		OutputStream out = response.getOutputStream();
		int c;
		while ((c = in.read()) != -1) {
			out.write(c);
		}
		out.close();
		in.close();
		// 終了したことをJSFに通知する。
		page.getFacesContext().responseComplete();	
		return null;
	}
として実現しています。
ログを見る限りは、Actionクラス終了後の出来事のようなのです。
「ClientAbortException」を無視するような対応が必要だと思うのですが・・・

別の目的でIntercepterを作成しています。この中で、
件のエラーを無視するコードを下のように記述すれば対応できるのでしょうか?
	try {
	    Object ret = invocation.proceed();	// 本来の対象メソッドの実行部分
	} catch (ClientAbortException e) {
		// 無視
	}
よろしくお願いします。

エラーのログです。
DEBUG 2007-09-13 01:07:21,609 [http-8080-Processor25] [ESSR0043]kh.web.MenuAct
ion$$EnhancedByS2AOP$$bde56dが呼び出した対象が不正です。理由はClientAbortExcep
tion:  java.net.SocketException: Connection reset by peer: socket write error
org.seasar.framework.exception.InvocationTargetRuntimeException: [ESSR0043]kh.
web.MenuAction$$EnhancedByS2AOP$$bde56dが呼び出した対象が不正です。理由はClien
tAbortException:  java.net.SocketException: Connection reset by peer: socket w
rite error
	at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:58)
	at org.seasar.framework.beans.impl.BeanDescImpl.invoke(BeanDescImpl.java:213)
	at org.seasar.teeda.extension.html.impl.HtmlComponentInvokerImpl.invoke(HtmlC
omponentInvokerImpl.java:159)
	at org.seasar.teeda.extension.html.impl.HtmlActionListener.processAction(Html
ActionListener.java:62)
	at javax.faces.component.UICommand.broadcast(UICommand.java:149)
	at org.seasar.teeda.extension.component.html.THtmlCommandButton.broadcast(THt
mlCommandButton.java:53)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:192)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:117)
	at org.seasar.teeda.core.lifecycle.impl.InvokeApplicationPhase.executePhase(I
nvokeApplicationPhase.java:29)
	at org.seasar.teeda.core.lifecycle.AbstractPhase.execute(AbstractPhase.java:5
5)
	at org.seasar.teeda.core.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:9
4)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:92)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
	at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(Hotdeplo
yFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
	at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2Contain
erFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
	at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:62
)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicati
onFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilter
Chain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.
java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.
java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:1
27)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:1
17)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.ja
va:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151
)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.proces
sConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.j
ava:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollower
WorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.j
ava:685)
	at java.lang.Thread.run(Thread.java:595)




Seasar-user メーリングリストの案内