`
y806839048
  • 浏览: 1120636 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

session转移(使用Filter方式实现用Memcached储存Session)

阅读更多

这两天看到了帖子《扩展Tomcat 6.x,使用memcached存放session信息》,挺有意思,以前我也有采用Memcached管理Session的想法,就是一直没有实践,这两天就实践了一下,codeutil提供的采用扩展Tomcat的方式不错,不过我更喜欢用Resin,所以还是实现一个通用的模块吧,大家可以下载附件,里面有整个工程,如果要使用的话,参照web.xml,把Filter加入你自己的项目就可以了,memcached.properties文件是memcached的配置文件,放入你的classes根即可。 

使用过程注意几个问题: 
1、memcache在一定时间内应该足够大,这样不会出现用户session从Cache中被清除的问题。 
2、如果session的读取比写入要多很多,可以在memcache前再加一个Oscache,减少对memcache的读操作,从而减小网络开销,提高性能(这也是codeutil提出的,我自己也实现了,不过没有加入源码,大家可以自己做)。 
3、如果用户非常多,可以使用memcached组,通过set方法中带hashCode,插入到某个memcached服务器 

其实使用memcached做session管理,我认为是把memcached作为一个可以相对持久化的内存工具,大家可以使用测试一下。

 

因为都是从缓存获取session,不是从某个服务端获取session,所以没有转移一说 

 

由上面的代码可知getsession,服务容器会调用容器内部的方法获取客户端的cookieid,然后调用自己的getsession对比(服务器自己会做的工作),这段代码里面利用这个特性复写让复写后的getsession等来自于缓存这样只要缓存同步一致对比肯定通过,这样就绕过了对比机制,后面就放行了(所以复制过来的session不必同步到新的服务上)

 

分享到:
评论

相关推荐

    j2ee项目使用filter和memcached实现session服务器

    本项目通过结合使用Filter(过滤器)和Memcached来实现一个高效的session服务器,以解决跨服务器会话共享的问题。 首先,让我们详细了解一下`Filter`。在Java Web开发中,Filter是Servlet API的一部分,允许开发者...

    memcached-session-manager-1.8.1

    4. **故障转移**:如果某个Memcached服务器宕机,MSM会检测到这一情况,并自动将session数据重定向到其他可用服务器,保证服务的连续性。 5. **安全机制**:通过设置Memcached的key前缀和密码认证,MSM提供了基本的...

    Tomcat+memcached+Nginx实现session共享

    MSM是一个Java Servlet Filter,它允许Tomcat将用户的session数据存储在memcached分布式缓存中,从而实现跨多个Tomcat实例的session共享。MSM支持两种模式:Sticky和Non-Sticky。 - **Sticky模式**:在这个模式下...

    改进基于filter的远程分布式session存储

    1. **Session复制**:当用户的请求被Filter捕获时,Filter可以负责将当前Session的状态复制到分布式存储中,如Redis或Memcached,确保多台服务器间的数据同步。 2. **Session粘滞性**:为了减少网络延迟,可以采用...

    分布式服务集群下实现session共享解决方案.docx

    6. Memcached:使用内存缓存系统存储session,性能优于数据库,但数据序列化影响效率,且服务器故障会导致session丢失。 7. Redis:内存数据库,适用于session存储,配置简单,性能高,不易丢失数据,是目前广泛...

    Spring Session实现分布式session的简单示例

    Spring Session 实现分布式 Session 的简单示例 在本篇文章中,我们将介绍如何使用 Spring...同时,Spring Session 支持多种数据存储方式,如 Redis、Memcached 等。这使得开发者可以根据需要选择合适的数据存储方式。

    memcached监控模板

    Memcached是一个高性能、分布式内存对象缓存系统,广泛应用于数据库缓存和session存储。它通过在内存中存储数据,实现快速读取,降低对磁盘I/O的依赖,从而提高系统性能。 ### 2. Zabbix介绍 Zabbix是一款开源的...

    Tomcat 同一服务器上 不同web项目共享session的

    5. **使用分布式session**:如果在集群环境中,可以使用如Memcached、Redis等缓存服务作为session的存储,所有节点都可以访问这些存储,实现跨服务器的session共享。 6. **使用Filter**:编写一个Filter,拦截请求...

    MSM所需Jar包

    在多服务器的Web应用环境中,传统的session存储方式(如本地内存或文件系统)无法实现session的跨服务器共享,可能导致用户登录状态丢失。Memcached因其分布式特性,能解决这个问题,使得session数据可以在多台...

    SpringBoot整合Shiro,实现从数据库加载权限、权限的动态更新、Session共享

    - **跨应用Session**:在分布式环境中,多个应用间需要共享Session,可以借助Shiro的`SessionManager`和`SessionDAO`,配合缓存技术(如Redis或Memcached)来实现。 - **配置SessionManager**:自定义`Session...

    shiro的全流程demo,世界shiro在spring中认证、授权流程,自定义授权类型,分布式session、授权缓存的实现

    每个客户端的 session 数据会被同步到共享存储中,确保所有节点都能访问到一致的 session 信息。 缓存管理在提高性能和减少数据库访问压力方面起到关键作用。Shiro 提供了缓存接口,可以集成 Redis、Memcached 或者...

    shiro中session的共享问题与完成前后端权限的校验

    可以配置如Redis或Memcached作为Session的存储后端,将Session数据保存在缓存服务中,确保各个节点都能访问到同一份Session数据。 Shiro的Session管理主要包括以下几个步骤: 1. 用户登录成功后,Shiro会创建一个...

    单点登录SpringSsession

    2. **可插拔的存储层**:虽然默认使用Redis,但Spring Session也支持其他存储技术,如Memcached等。 3. **灵活的会话管理**:提供了多种策略来管理会话的有效期、会话的失效处理等。 4. **安全性**:支持HTTPS协议,...

    java_web 用户只能在一处登陆源码

    这可以通过集中式Session存储(如Redis或Memcached)或使用Token(如JWT)来实现。 6. **登出功能**: 用户主动登出时,不仅需要清除本地的Session ID(即删除Cookie),还应确保在服务器端同步移除Session,确保...

    java web 统计在线人数

    在Java Web开发中,统计在线人数是一项常见的需求,它能够帮助我们了解网站或应用的实时活跃用户数量。这里我们将深入探讨如何实现这一功能。...选择合适的实现方式取决于项目规模、性能需求以及团队的技术栈。

    sso.zip_sso_sso java

    在SSO场景下,Memcached可以作为共享Session的存储介质,确保各个应用系统能够访问到用户的统一认证信息。 在Java中实现SSO,通常包含以下几个关键步骤: 1. **认证中心(Authentication Center,AC)**:这是SSO...

    PHP实例开发源码-盾灵多任务推广系统 php版.zip

    9. 缓存技术:为了提升性能,系统可能使用了PHP的缓存技术,如APC、Memcached或Redis,来存储频繁访问的数据,减少数据库的负载。 10. 框架使用:虽然没有明确提及,但现代PHP开发通常会使用框架如Laravel、Symfony...

    TE_loginsession

    标题“TE_loginsession”可能指的是一...具体实现方式可能涉及到Servlet、Filter、Spring Security等技术,也可能包含对登录会话的各种优化和安全措施。要深入理解这个项目,需要查看源码并理解其设计思路和实现细节。

Global site tag (gtag.js) - Google Analytics