【问题标题】:Invalidate Session at all Cluster Weblogic在所有集群 Weblogic 上使会话无效
【发布时间】:2011-01-21 04:18:27
【问题描述】:

我尝试将用户会话保存在每个集群的哈希图中。当我需要使其无效时,我将采用指定的会话 ID。并在会话以正常方式使会话无效的地方使其无效。

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

会话将在无效发生的地方消失。但在其他集群会话上仍然可用。

为什么其他集群上的会话仍然存在。以及如何使其他集群上的会话失效。

谢谢。

【问题讨论】:

  • 您说的是多个集群。你有集群间复制吗? (download.oracle.com/docs/cd/E11035_01/wls100/cluster/…)
  • 什么是集群间复制?如果您的意思是会话将在集群中复制,是的。
  • 您正在写“其他集群上的会话”。有多少个集群?
  • 我配置了大约 2 个集群在一台机器上运行(实际上是我的笔记本电脑)。我还没有尝试在其他机器上。如果我像上面那样,我不明白为什么 weblogic 不能使其他集群上的所有会话无效。但是当我以普通方式使会话无效时,它的成功(从http请求中获取会话)。有什么线索吗?
  • 我猜您将集群与服务器混淆了。请检查您的域配置 (download.oracle.com/docs/cd/E11035_01/wls100/cluster/…) 并检查会话复制配置是否正确 (download.oracle.com/docs/cd/E11035_01/wls100/cluster/…)。

标签: session jakarta-ee weblogic invalidation


【解决方案1】:

(最好确认我们是在谈论服务器还是集群 - 您域的 config.xml 会有所帮助)

会话对象仅由 Web 容器内的 WebLogic Server 管理 - 如果您在另一个服务器或另一个集群中手动创建 HashMap 中会话对象的副本,WebLogic Server 不会自动使该副本无效session 对象,因为它在 web 容器之外。

WebLogic Server 将自动且非常透明地创建 HttpSession 对象的复制副本,前提是您的 weblogic.xml 部署描述符中的 元素具有正确的设置(建议使用 replicated_if_clustered for persistent-store-type)

此处提供文档:http://download.oracle.com/docs/cd/E13222_01/wls/docs103/webapp/weblogic_xml.html#wp1071982

最好了解您在此处尝试实现的目标 - 除非您在谈论怪物应用程序或跨越广泛的网段,否则不需要跨集群复制,尽管 WebLogic Server 支持它.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2015-01-18
    相关资源
    最近更新 更多