`
lzj520
  • 浏览: 215948 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

090213 集群内用jsessionid共享session

阅读更多
可以采用cookies和sessionid的做法,这里是使用sessionid的做法。
使用HttpSessionListener来监听session的创建和销毁,集群内部的tomcat开启session复制。2个应用都试用HttpSessionListener来监听

web.xml:

  <listener>
  <listener-class>com.com.ActiveUserListener2</listener-class>
 </listener>

<distributable/>

ActiveUserListener2.java

package com.com;

import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class ActiveUserListener2 implements HttpSessionListener {
    private static int sessionCount2 = 0;
    private static Map sessionMaps2 = new HashMap(); //存放session的集合类

  public void sessionCreated(HttpSessionEvent arg0) {
        HttpSession session = arg0.getSession();
        String sessionId = session.getId();
        System.out.println("Create a session:" + sessionId);
        sessionMaps2.put(sessionId, session);
        sessionCount2++;
 }

  public void sessionDestroyed(HttpSessionEvent arg0) {
        sessionCount2--;
        String sessionId = arg0.getSession().getId();
        sessionMaps2.remove(sessionId);//利用会话ID标示特定会话
        System.out.println("Destroy a session:" + sessionId);
 }
 public static int getSessionCount() {
  return sessionCount2;
    }
    public static Map getSessionMaps() {
     return sessionMaps2;
    }
}

传递sessionid,?jsessionid=<%=session.getId()%>

测试效果:
<%
Map activeSessions = ActiveUserListener2.getSessionMaps();
             out.println(activeSessions.get("CB55ABC39DD5B917D65F456C28FC25E6.tomcat1"));
             out.println(activeSessions);
            }
      }
%>

分享到:
评论

相关推荐

    CASClient集群环境的Session问题及解决方案.docx

    由于每个应用都有其自己的 JSESSIONIDCookie,因此无法在不同的应用之间共享 Session 信息。例如,用户首先访问 CAS Client 01,登录成功后,系统会将用户的 Session 信息存储在浏览器中的 Cookie 中。当用户访问 ...

    tomcat集群使用redis共享session的jar包

    通过以上步骤,我们可以成功地使用Redis来实现Tomcat集群的session共享,确保用户在多台服务器间的会话一致性,提高了应用的用户体验和整体性能。这个过程涉及到的关键jar包,如`tomcat-session`,提供了与Redis交互...

    nginx+tomcat集群的jar包 session共享

    然而,在这种配置中,`session` 共享成为一个关键问题,因为用户在与集群中的不同 `tomcat` 实例交互时,需要保持会话状态的一致性。本篇将深入探讨如何通过 `nginx` 和 `tomcat` 集群实现 `session` 共享。 ### 1....

    Nginx 集群 tomcat session 共享配置有源码

    然而,当多个Tomcat实例构成集群时,会面临一个问题:用户session的共享。Session是Web应用程序用来跟踪用户状态的重要机制,如果不能在集群间共享,用户在切换服务器时可能会失去登录状态,导致用户体验下降。为...

    session共享方案(tomcat8+redis共享session)

    本文将深入探讨一种实现方式——使用Tomcat8与Redis相结合的Session共享方案。该方案旨在确保用户在集群中的任意一台服务器上登录后,其Session信息能够在其他服务器上无缝访问,从而提供一致的用户体验。 首先,...

    使用redis解决nginx+tomcat8负载均衡集群session共享问题jar包

    `标题`中提到的"使用redis解决nginx+tomcat8负载均衡集群session共享问题jar包",实际上是指利用Redis作为中央缓存来存储和共享session数据,以解决负载均衡下的session丢失问题。 **Redis作为Session存储** Redis...

    Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享

    在Windows环境下,Apache2.2和Tomcat6的组合是一个常见的Web服务器架构,用于搭建集群、实现负载均衡和处理session共享。Apache作为前端反向代理服务器,负责分发请求到后端的多个Tomcat实例,以提高应用的可用性和...

    Session共享 tomcat7+redis的session共享实现

    但在集群环境中,每个服务器都有自己的Session存储,导致跨服务器的Session不共享。为了解决这个问题,我们可以引入外部Session存储,比如Redis,一个高性能的键值数据库。 标题中的"Session共享 tomcat7+redis的...

    nginx-redis-tomcat 集群session共享方案

    8. **Nginx配置session共享**:在Nginx的配置文件`nginx.conf`中,通过`proxy_set_header`指令设置`JSESSIONID`或自定义cookie名,将session ID传递给后端服务器。同时,使用`proxy_pass`指令指向Redis服务器,实现...

    tomcat8.5.38 redis session 共享所需jar

    在Tomcat集群环境中,当用户请求被负载均衡器分发到不同的服务器节点时,如果不能共享session,会导致用户状态在不同服务器间丢失,影响用户体验。因此,通过引入外部存储(如Redis)来共享session数据是必要的。 ...

    tomcat7_redis_Session共享所需jar包及使用方法

    3. **配置Web应用**:在每个需要共享Session的Web应用的`WEB-INF/web.xml`中,设置Session配置,如下: ```xml &lt;session-config&gt; &lt;session-timeout&gt;30&lt;/session-timeout&gt; &lt;name&gt;JSESSIONID &lt;path&gt;/ ...

    Spring+Redis+Session共享

    为了解决这个问题,我们需要一种机制来实现在多台服务器间共享Session,确保无论用户请求被路由到哪台服务器上,都可以访问到相同的Session信息。 ##### 场景二:同主域下多应用 在一个大型企业或组织中,往往会有...

    redis的session共享

    在现代Web应用开发中,随着用户量的增长,服务器集群的使用变得越来越普遍。然而,用户Session的管理在分布式环境下成为一个挑战。为了解决这个问题,我们可以利用Redis这种高性能的键值存储系统来实现Session共享。...

    linux下nginx+tomcat使用redis进行session共享所需jar包

    在Linux环境下,构建一个高效的Web服务架构通常会结合多种技术,例如使用Nginx作为反向代理和负载均衡器,Tomcat作为Java应用服务器,以及Redis作为分布式缓存来实现Session共享。本教程将详细讲解如何在Linux上的...

    tomcat8-session共享

    在集群环境下,如果不能正确共享Session,会导致用户在不同服务器间切换时丢失这些信息,用户体验大打折扣。 接下来,我们介绍核心组件的作用: 1. **Tomcat8**:作为Java应用服务器,处理HTTP请求并运行Servlet和...

    Nginx+tomcat+session共享

    4. 集成session共享jar包:将提供的基于Redis的Session共享jar包引入Tomcat的lib目录,使得每个Tomcat实例都能使用该jar进行session的读写操作。 5. 测试和优化:部署应用程序,验证session是否可以在不同Tomcat实例...

    nginx session共享的问题.docx

    这是因为session通常依赖于服务器存储,当涉及到多服务器的集群环境时,不同服务器之间无法共享session数据,可能导致用户状态混乱。通过将session数据转换为cookie,客户端负责携带这些信息,避免了服务器间的同步...

    redis-tomcat8以上集群所需要的jar :tomcat-redis-session-manager-master 等

    这是一个专门设计用于Tomcat的Redis Session Manager,它允许你在多个Tomcat实例之间共享Session数据。当你的应用程序部署在多个Tomcat服务器上,每个服务器都可以访问同一份Session信息,从而实现负载均衡和故障...

    tomcat 8.5.x | 9.x.x redis cluster session

    5. **配置集群**:为了使Tomcat实例能够发现彼此并共享session,你还需要配置集群。这通常通过网络接口和TCP/IP通信实现。在`server.xml`中,设置`Cluster`元素,例如: ```xml ... ``` 6. **测试和优化**:...

    tomcat+redis 实现session共享

    为了解决这个问题,我们可以采用外部存储机制来共享Session,如将Session数据存入Redis这样的内存数据库。本文将详细介绍如何使用Tomcat和Redis实现Session共享,并提供相关的jar包及配置说明。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics