这个过程是我在公司服务器上测试成功的,可能不是很通用。
1.tomcat版本是:
Server version: Apache Tomcat/6.0.33
将如下jar包放入到tomcat的lib目录下:spymemcached-2.7.3.jar,msm-javolution-serializer-1.6.3.jar,memcached-session-manager-tc6-1.6.2.jar,memcached-session-manager-1.6.2.jar,javolution-5.4.3.1.jar
2.配置tomcat配置文件:
conf/context.xml
<Context>
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.0.1:11211,n2:192.168.0.2:11211,n3:192.168.0.3:11211,n4:192.168.0.4:11211"
requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync="false"
sessionBackupTimeout="100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
copyCollectionsForSerialization="false"
/>
</Context>
重启tomcat
这样,通过memcache建造session池的功能就完成了。
测试后,发现sessionId会变成类似:22EC2998428493D70A59FF6268888F27-n2这样,可能是因为配置了4个memcache池,这个session存储在第2个的原因。
测试从A1机器的tomcat给该sesison设置值以后,在A2机器的tomcat中通过sessionId取值能得到正确的结果。
更详细的配置说明在:
http://code.google.com/p/memcached-session-manager/