[Seasar-user:17011] Re: ボタン連打で発生するエラーについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 2月 27日 (金) 21:00:09 JST


小林 (koichik) です.

Date:    Fri, 27 Feb 2009 18:25:25 +0900
From:    <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:17010] Re: ボタン連打で発生するエラーについて

> DBアクセスがない状態でも再現しました。
> 差分ファイルを送付いたします。

ありがとうございました.

> DBアクセス絡みだと思っていたのですが、
> teedaErrorPage.diconを入替えた時のみ再現しました。

これで状況が把握できました.
複数の問題が絡み合って発生していました.

一つ目は,teedaErrorPage.dicon で Throwable が
発生した場合にエラーページにリダイレクトするように
指定されているため,サブミットボタンを連打した
場合の最後を除くリクエストはコネクションが切断
された場合に発生する例外でエラーページを表示しようと
して,セッションにエラーメッセージが設定されたこと.

二つ目は,連打された最初を除くリクエストのように,
エラーページを表示するためのリダイレクト要求でない
リクエストでも,エラーページを表示するための
エラーメッセージがクリアされないこと.

三つ目はエラーメッセージのクライアント ID が
null の場合のチェックが漏れていたこと.

このうち一番本質的な問題は二つ目なのですが,
ここに手を入れると影響がとても大きそうなので,
# 今回の現象自体,二つ目の箇所の修正が原因で
# 1.0.11-SP1 以降で発生します.
一つ目と三つ目のみ対策をしました.

一つ目についてはこれまでも [Seasar-user:16343] や
[Seasar-user:14836] などで問題が起きているので,
SocketException を原因とする例外が発生した場合は
エラーページに遷移しないようにしました.
# デバッグメッセージは相変わらず表示されます.
# これでリダイレクトを回避できるかどうかは
# Web コンテナ依存になってしまいますが.

SNAPSHOT をデプロイしたのでご確認ください.

http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-core/1.0.13-sp7-SNAPSHOT/teeda-core-1.0.13-sp7-20090227.113454-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-extension/1.0.13-sp7-SNAPSHOT/teeda-extension-1.0.13-sp7-20090227.113454-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-ajax/1.0.13-sp7-SNAPSHOT/teeda-ajax-1.0.13-sp7-20090227.113454-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-tiger/1.0.13-sp7-SNAPSHOT/teeda-tiger-1.0.13-sp7-20090227.113808-1.jar



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