- - PR -
tomcatのクラスタリングについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-04-15 15:44
下記の環境にて、サイトを運営しております。
●HardWare(×2) OS:Debian4.0 WebServer:tomcat 5.5.25 APServer:apache2.2.3 ●SoftWare struts 1.3.8 hibernate3 velocity springframework2 serverが2台あるので、tomcatのクラスタリング機能を用いてsessionレプリケーションを行おうと 考えておりますが、TransactionTokenが共有されずにIsTokenValidでTokenが一致しないと みなされしまい、session共有がうまく行えておりません。 tomcatのmanualを見ながらClusterタグの設定を色々変更してみているものの全然効果がない状態です。 現在、tomcatの設定はserver.xmlにあるClusterタグ部分のコメントを外した状態になっており Context毎のweb.xmlにレプリケーション用のタグを記述している状態です。 何かアドバイスを頂ければと思います。情報が不足しておりましたらご連絡いただければと思います。 お手数お掛け致しますが、ご教授の程宜しくお願い致します。 |
|
投稿日時: 2008-04-15 23:32
Strutsの同期トークンの仕組みは、クラスタ対応が微妙です。
Tomcatのクラスタのレプリケーションはリクエスト完了後に行われます。 (厳密にそういう仕様であるかを確認したわけではなく、 単に実行して試した事があるだけです。) それと、トークンの発行を行う際、リクエスト単位でスレッドの同期化が行われますが、 クラスタ環境の場合、同一セッションのリクエストが別々のサーバで処理されます。 それぞれのリクエストのスレッドの同期はできません。 本格的にやるのであれば、 1.Actionクラスを継承して、Token系メソッドをオーバーライドして独自のTokenプロセッサを使用 2.Tokenプロセッサ内での同期化はDBの行ロックで行う 3.セッションの変わりにDBにトークンを保存 というように、同期処理や保存処理をDBに委譲するようにすれば、 割と簡単に対応できるかもしれません。 |
1