[Seasar-user:14846] Re: [Teeda] 二重サブミットについて
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2008年 6月 27日 (金) 18:00:06 JST
小林 (koichik) です.
Date: Tue, 24 Jun 2008 17:12:37 +0900
From: 松崎 学 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:14803] Re: [Teeda] 二重サブミットについて
> お忙しいところ申し訳ありませんが、修正バージョンよろしくお願い致します。
SNAPSHOT をデプロイしたのでご確認ください.
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-core/1.0.13-sp2-SNAPSHOT/teeda-core-1.0.13-sp2-20080627.082855-5.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-extension/1.0.13-sp2-SNAPSHOT/teeda-extension-1.0.13-sp2-20080627.082855-5.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-ajax/1.0.13-sp2-SNAPSHOT/teeda-ajax-1.0.13-sp2-20080627.082855-5.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/teeda/teeda-tiger/1.0.13-sp2-SNAPSHOT/teeda-tiger-1.0.13-sp2-20080627.083235-5.jar
ウィンドウ ID に乱数を使うようにはしましたが,
結局複数のウィンドウからのリクエストを異なった
サーバで並行に処理すると,情報を失う可能性が
あります.
現在の Teeda はサブアプリケーションスコープ等の
情報を次のような構造の Map で管理しています.
subapp = {
null = {key=value, key=value,...}
wid1 = {key=value, key=value,...}
wid2 = {key=value, key=value,...}
}
subapp という大きな Map が HTTP セッションに
保存され,その中にウィンドウごとの Map が
保持されます.
もし複数のウィンドウからのリクエストを異なった
サーバで並行に処理すると,サーバ A では
デフォルトのウィンドウからのリクエストを処理して
subapp = {
null = {key=AAAAA, key=BBBBB,...}
wid1 = {key=value, key=value,...}
wid2 = {key=value, key=value,...}
}
となり,サーバ B では wid1 のリクエストを
処理して
subapp = {
null = {key=value, key=value,...}
wid1 = {key=AAAAA, key=BBBBB,...}
wid2 = {key=value, key=value,...}
}
となったりします.
リクエストの処理後,それぞれのサーバで
この Map がセッション情報に保存されると,
先に保存した方の変更が失われます.
そのため,やはりスティッキーを使用して
同じセッションに対するリクエストは常に
同じサーバで処理されるようにする方が無難です.
ウィンドウ Id を上位のキーとして,
wid1 = {
page = {key=value, key=value,...}
subapp = {key=value, key=value,...}
redirect = {key=value, key=value,...}
}
wid2 = {
page = {key=value, key=value,...}
subapp = {key=value, key=value,...}
redirect = {key=value, key=value,...}
}
のようにすることも考えたのですが,ウィンドウ数の
上限 (現在のデフォルトは 20 ) を管理するのが
難しく,それに対処しようとすると結局スティッキー
セッションが必要になってしまって本末転倒という
感じなので,現状のままにしたいと思います.
--
<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 メーリングリストの案内