memcached tomcat 共享session

要求两个tomcat共用一个session,可以引用外部缓存( memcached),将session统一放在memcached里面,这样的话,两个tomcat就共用一个session,问题解决了。
   下面是我做的一些实验:
1、先做好准备工作
     将要用的的工具找到:memcached.exe、tomcat6
     用到的包:memcached-session-manager-1.5.1.jar、memcached-session-manager-tc6-1.5.1.jar、msm-javolution-serializer-1.5.1.jar、javolution-5.5.1.jar、memcached-2.5.jar(全部在附件中,tomcat6网上应该很好找,自己下)。
2、安装memcached
   a、memcached.exe放在一个路径下(例如:D:\memcached)
   b、cmd进入到此路径下,执行 memcached.exe -d install,即安装memcached,完成后再执行 memcached.exe -d start,即启动服务, 以后memcached将会作为系统的一个服务自动启动。现在去系统服务下看,如果有memcached且已启动,说明安装成功。 (memcached的默认端口是11211)
3、安装部署tomcat
   a、下载免安装版tomcat但是要 注意设置jdk环境变量即jdk安装路径(JAVA_HOME) 
   b、复制两份tomcat配置两个tomcat的端口,其中一个不动修改另外一个:
      <Server port="8006" shutdown="SHUTDOWN">:原来是8005注意 端口改成四位数
       <Connector executor="tomcatThreadPool"
                     port="8087" protocol="HTTP/1.1"
                     connectionTimeout="20000"
                     redirectPort="8443" />     :原来是8080
       <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />:原来是8009
启动两个服务器,能一起跑起来,进行下一步。
4、将上面准备的包全部放在两个tomcat的lib下并配置。
再在 context.xml中加上配置:
    
  
				 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
					memcachedNodes="n1:192.168.1.101:11211"
					sticky="false"
					sessionBackupAsync="false"
					lockingMode="auto"
					requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
					transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
					/>
			



   n1:localhost:11211:memcached服务的接口,11211为memcached的默认端口,现在装在本地的所以为localhost:11211。
在同时运行下tomcat,成功启动,说明配置没错,现在就进行测试了:
5、测试
   附件中的test即为测试项目。分别部署在两个tomcat下,启动,在同一个浏览器访问两个不同的项目,根据页面显示的sessionID,发现是一样的。

参考: http://blog.csdn.net/a__java___a/article/details/8738932

你可能感兴趣的:(memcached)