[Seasar-user:19375] Re: [ETDA0027]JSP 例外について
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2010年 2月 24日 (水) 16:00:53 JST
小林 (koichik) です.
Date: 24 Feb 2010 14:48:00 +0900
From: "落合 あずみ" <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:19373] Re: [ETDA0027]JSP 例外について
> JspException にステップインしたところ
> rootCouseには、以下の内容が設定されているので
> 渡されていると思って大丈夫でしょうか。
> ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error
> this.cause、this.rootCause にもそれぞれ JspException、ClientAbortException が設定されています。
それなら JspException のメッセージや
スタックトレースにも SocketException が
出力されるはずだと思うのですが,
実際には出力されていないわけですよね?
矛盾しているというか,どうなっているのか
ちょっと理解できない状況です.
念のため,デバッガでもう一度上記の確認をして,
その際に出力されたスタックトレースを見せて
もらえますか?
> cause フィールドには、javax.servlet.jsp.JspException が設定されています。
cause の JspException を展開して出てくる
cause は ClientAbortException になってますか?
さらにそれを展開して出てくる cause は
SocketException になってますか?
> ただ cause フィールドですが、どこまで展開しても フィールドが null になりません。
> 本来であればどれくらい展開すれば、null になるのでしょうか。。
ごめんなさい,null になるのではなく,自分自身 (this) と
同じになるまで,ですね.
本来であれば,SocketException の cause が
SocketException 自身になるはずです.
さらに,デバッガで以下の確認をお願いします.
TeedaExtensionErrorPageManagerImpl の
125 行目にブレークポイントを付ける.
例外チェーンで再帰するので,その引数が
JspRuntimeException,JspException,
ClientAbortException,SocketException となり,
128 行目の return true; で戻ることを確認.
現象的には,引数が JspException の時に
getCause() が null を返して,132 行目の
return false; で戻ってしまっていると
思われます.
--
<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 メーリングリストの案内