[Seasar-user:19369] Re: [ETDA0027]JSP 例外について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 2月 23日 (火) 18:00:15 JST
小林 (koichik) です.
Date: 23 Feb 2010 13:29:00 +0900
From: "落合 あずみ" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19368] Re: [ETDA0027]JSP 例外について
> ログに出力されていたスタックトレースは
> メールに記述したものだけだったのですが、
> デバッグで確認したところ、
>
> ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
>
> と出力されていました。
> 大元の原因とはこれのことでしょうか。
たぶんそれです.
が,それがスタックトレースに出てないのが気になります.
「デバッグで確認」というのはどういう意味でしょうか?
デバッガで確認?
ともあれ (JW),スタックトレースの
> >> Caused by: javax.servlet.jsp.JspException
> >> at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:190)
に該当する UIComponentTag のコードは
} catch (final IOException e) {
component = null;
context = null;
throw new JspException(e);
となっていて,ここでキャッチされたのが
ClientAbortException であるなら,
JspRuntimeException -> JspException ->
ClientAbortException -> SocketException
という例外チェーンが作られます.
そうなれば,TeedaExtensionErrorPageManagerImpl は
この例外を無視するのですが,requestDumpFilter の
ログを見ると無視されていないようです.
こちらで Tomcat6 + Teeda HTML Example で
ブラウザ側で接続を切断してみたところ,スタック
トレースにはちゃんと ClientAbortException も
SocketException も出力されていました.
上記で引用した JspException に相当する部分も
Caused by: javax.servlet.jsp.JspException: ClientAbortException: java.net.SocketException: Software caused connection abort: socket write error
at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:190)
となっており,原因となった例外のメッセージが
出力されます.
状況から考えると,UIComponentTag クラスが
書き換えられて,
} catch (final IOException e) {
component = null;
context = null;
throw new JspException();
^
となっていることくらいしか思いつかないのですが,
そんなことはないでしょうか?
念のため,デバッガで以下の確認をお願いします.
UIComponentTag クラスの 190 行目にブレーク
ポイントを付ける.
停止したら JspException のコンストラクタに
ステップインして,引数として原因となった例外が
渡されていることを確認.
HtmlViewHandler クラスの 159 行目にブレーク
ポイントを付ける.
停止したら Variables ビューで変数 ex を
展開して cause フィールドに設定されている
例外のクラスを確認.
cause フィールドを展開して,同じようにその
cause フィールドに設定されている例外クラスを
確認.
cause フィールドが null になるまで繰り返す.
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"[E-MAIL ADDRESS DELETED]"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-user メーリングリストの案内