私はすべてのクラスタのハッシュマップにユーザーセッションを保存しようとしています。私はそれを無効にする必要があるとき、私は指定されたセッションIDを取る。セッションを無効化する通常の方法でセッションを無効にします。すべてのクラスタWeblogicでセッションを無効にする
public class SessionListener implements HttpSessionListener {
public HashMap<String, HttpSession> sessionHolder = new HashMap<String, HttpSession>();
@Override
public void sessionCreated(HttpSessionEvent se) {
sessionHolder.put(se.getSession().getId(), se.getSession());
}
public void invalidate(String sessionId){
if(this.sessionHolder.get(sessionId)!= null){
System.out.println("Invalidate session ID : " + sessionId);
HttpSession session = sessionHolder.get(sessionId);
session.invalidate();
} else {
System.out.println("Session is not created in this cluster ID : " + sessionId);
}
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("Session " + se.getSession().getId() + " has been destoryed");
sessionHolder.remove(se.getSession().getId());
}
}
無効になるセッションは致命的になります。他のクラスタセッションではまだ使用可能です。
なぜ他のクラスタ上のセッションがまだあるか。他のクラスタ上のセッションも無効にする方法について説明します。
ありがとうございました。
複数のクラスタについて話しています。クラスタ間レプリケーションはありますか? (http://download.oracle.com/docs/cd/E11035_01/wls100/cluster/failover.html#wp1040345) – fglez
クラスタ間レプリケーションとは何ですか?セッションがクラスタを越えて複製されることを意味する場合は、そうです。 –
「他のクラスタのセッション」について書いています。そこにはいくつのクラスタがありますか? – fglez