Неправильный сеанс на всех кластерах Weblogic - PullRequest
1 голос
/ 21 января 2011

Я пытаюсь сохранить сеанс пользователя в хэш-карте на каждом кластере. и когда мне нужно сделать его недействительным, я возьму указанный идентификатор сессии. и сделать его недействительным, если сеанс создан обычным способом, чтобы сделать сеанс недействительным.

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());
 }
}

сеанс погибнет, если произойдет недействительное. но на другом кластере сеанс все еще доступен.

почему сеанс на другом кластере еще. и как также сделать недействительным сеанс на другом кластере.

спасибо.

1 Ответ

0 голосов
/ 07 февраля 2011

(было бы неплохо подтвердить, говорим ли мы о серверах или кластерах - config.xml для вашего домена поможет)

Объект сеанса управляется только WebLogic Server внутри сети.контейнер - если вы создадите копию объекта сеанса в HashMap вручную либо на другом сервере, либо в другом кластере полностью, WebLogic Server не будет автоматически делать недействительной копию этого объекта сеанса, потому что он находится за пределами веб-контейнера.

WebLogic Server автоматически и совершенно прозрачно создаст реплицированную копию объектов HttpSession при условии, что вашэлемент в вашем дескрипторе развертывания weblogic.xml имеет правильные настройки (рекомендуется использовать replicated_if_clustered для типа постоянного хранилища)

Документ доступен здесь: http://download.oracle.com/docs/cd/E13222_01/wls/docs103/webapp/weblogic_xml.html#wp1071982

Было бы хорошо понять, что вы 'мы пытаемся достичь этого - кросс-кластерная репликация не обязательна, если вы не говорите о приложении-монстре или охватывают широкий сегмент сети, хотя это поддерживается WebLogic Server.

...