[Seasar-user:21706] Tomcatでのセッションレプリケーション実装方法について
西村一昭
[E-MAIL ADDRESS DELETED]
2013年 9月 3日 (火) 14:35:09 JST
お世話になっております。
西村と申します。
Tomcatでのセッションレプリケーションの実装方法についてお伺いします。
現在、
WEB(Apache)×3 - LB - AP(Tomcat)×2 - DB(MySQL)×1
の構成でTomcatでのセッションレプリケーションの実装を検討しています。
過去のMLを参考に下記のような実装を行おうと考えているのですが、
何か過不足がありましたらご指摘をお願いします。
1.Tomcatの設定
・Tomcatのserver.xmlの<Cluster>タグのコメントアウトを解除し、有効にする
・<Cluster>タグの<Valve className="〜.ReplicationValve"/>の除外対象から「.*\.html」を削除する
2.アプリの設定
・web.xmlに「<distributable/>」を追記する
・htmlで「<te:include>」を使用している箇所やForm部品にid属性を設定し、「name="_idXX"」が付与されないようにする
※「<te:include>」以外に注意が必要な個所はありますか?
・FilterやIntercepterで明示的にHttpSession#setAttribute()を行う
インターセプタへの実装案:
public class SessionSetAttributeInterceptor extends AbstractInterceptor {
/** シリアルバージョンUID */
private static final long serialVersionUID = 1L;
/**
* インタセプタのポイントカット時に呼び出されるメソッド
*/
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Object ret = methodInvocation.proceed();
HttpSession httpSession = SingletonS2Container.getComponent("session");
// ユーザ情報Dto
Object objUserInfoDto = httpSession.getAttribute("userInfoDto");
httpSession.setAttribute("userInfoDto", objUserInfoDto);
//TODO その他セッション格納Dto
// Teeda Extension
Object objPageScope = httpSession.getAttribute(javax.faces.internal.scope.PageScope.class.getName());
httpSession.setAttribute(javax.faces.internal.scope.PageScope.class.getName(), objPageScope);
Object objSubApplicationScope = httpSession.getAttribute(javax.faces.internal.scope.SubApplicationScope.class.getName());
httpSession.setAttribute(javax.faces.internal.scope.SubApplicationScope.class.getName(), objSubApplicationScope);
Object objRedirectScope = httpSession.getAttribute(javax.faces.internal.scope.RedirectScope.class.getName());
httpSession.setAttribute(javax.faces.internal.scope.RedirectScope.class.getName(), objRedirectScope);
return ret;
}
}
システム構成:
・Redhat-Linux ES release 4
・Apache2.0.52
・jdk1.5.0.9
・Tomcat 6.0.35
・s2-framework 2.4.24
・Teeda 1.0.13-sp6
・MySQL 5.0.27
参考にしたML:
・[Seasar-user:11433]
・[Seasar-user:17881]
・[Seasar-user:21674]
Seasar-user メーリングリストの案内