[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 メーリングリストの案内