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