利用memcache来保存tomcat的session会话

简介:
  1. 利用memcache来保存tomcat的session会话
  2. 网上有大量的文章有写memcache在tomcat的设置方法,基本上都从一个文章里转的,把内容都搞乱了。
  3. 为此,写一篇记录一下。本文的主要目的是修正一下,部分网上有误的地方。 
  4. 前提条件:
  5. 1、memcached正常工作了
  6. 2、tomcat 正常工作了。
  7. 1、安装方法及安装包
  8. javolution-5.4.3.1.jar
  9. memcached-2.4.2.jar
  10. memcached-session-manager-1.3.0.jar
  11. msm-javolution-serializer-cglib-1.3.0.jar
  12. msm-javolution-serializer-jodatime-1.3.0.jar
  13. 安装方法:  将这几个包放到/usr/local/tomcat6.0/lib里。
  14. 2、编辑tomcat的配置文件。 <这一点很重要,因为网上大多数文章都是说修改server.xml里配置;我试过但最终发现session的信息没有存入到memcache中,我意识到这可能是配置有问题。目前发现编辑context.xml这个文件,是可以立即将session丢入到memcache中的。>
  15. # vim /usr/local/tomcat6.0/conf/context.xml
  16. <Context>
  17. <!-- 在这个字段下添加以下内容,在节点入请填入你的memcached服务器ip及端口号-->
  18.                 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
  19.                         memcachedNodes="n1:10.254.41.197:11211"  
  20.                         requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"  
  21.                         sessionBackupAsync="false"  
  22.                         sessionBackupTimeout="100"  
  23.                         transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"  
  24.                         copyCollectionsForSerialization="false" />
  25. </Context>
  26. 3、如何测试? 
  27. 我目前的测试方法是,通过apache的mod_jk来实现负载均衡(之前的文章里有写),并且启用tomcat之间的会话复制。
  28. 这样的结果就是,seesion ID会随着每次用户的提交而变换节点,但ID不变。
  29. 例如:
  30. ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat2 
  31. 下次提交就会变成: <节点切换了,但是ID不变>
  32. ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat1 
  33. 结合memcache的状态: <我之前在会话没有成功的丢到memcached这里时,cmd_set 为0 >
  34. # perl memcached-tool.pl 10.254.41.197:11211 stats
  35.                  cmd_get          27
  36.                  cmd_set          15
  37.                  get_hits           12
  38. # perl memcached-tool.pl 10.254.41.197:11211 stats
  39.                  cmd_get          31
  40.                  cmd_set          17
  41.       get_hits           14
  42. 我想通过以上的判断,配置 是成功的!









本文转自 kuchuli 51CTO博客,原文链接:http://blog.51cto.com/lgdvsehome/878164,如需转载请自行联系原作者
目录
相关文章
|
应用服务中间件
tomcat重启时保持会话关闭
tomcat重启时保持会话关闭
|
存储 负载均衡 NoSQL
Tomcat 9.X(9.0.74)集群实现Session共享(基于redisson)
本文主要介绍了tomcat集群环境下基于redis+Redisson实现session共享,分享给大家,供广大从业者学习和参考。
12383 4
|
应用服务中间件 容器
Tomcat的Session过期处理策略
Tomcat的Session过期处理策略
116 0
|
应用服务中间件 容器
Tomcat设置session超时的几种方式
Tomcat设置session超时的几种方式
464 0
|
负载均衡 NoSQL Java
基于redis 的tomcat session 同步
这里我把Redis放在/XX/下,所以在该目录下执行下列命令: $ wget http://download.redis.io/releases/redis-3.2.1.tar.gz $ tar xzf redis-3.2.1.tar.gz $ cd redis-3.2.1 $ make
162 0
|
负载均衡 Java 应用服务中间件
tomcat集群下的session共享和负载均衡(memcache实现)
tomcat集群下的session共享和负载均衡(memcache实现)
133 0
|
负载均衡 NoSQL Java
tomcat集群下的session共享和负载均衡(redis实现)
tomcat集群下的session共享和负载均衡(redis实现)
269 0
|
NoSQL Java 应用服务中间件
tomcat集群使用redis实现session共享
tomcat集群使用redis实现session共享
292 0
|
NoSQL 应用服务中间件 Redis
tomcat redis session共享的解决方案SessionListener不执行
tomcat redis session共享的解决方案SessionListener不执行
100 0
|
NoSQL Java 应用服务中间件
tomcat redis session共享报错 lassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool$Confi
tomcat redis session共享报错 lassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool$Confi
146 0