随着网站访问量的不断增大,一台应用服务器已经无法满足高并发的访问,我们不得不选择将项目集群。我们不得不将项目放到不同的应用服务器(如 :tomcat)中,但是由于每个tomcat生成自身的session,所以当用户第一次访问(如:访问到了tomcat-1)并进行了登陆,但是当他第二次进行访问(如 :访问到了tomcat-2)时由于tomcat-1中已登录的session信息不能在tomcat-2中获取,系统又会要求用户进行登陆。那么只有让两个tomcat的session保持一致才能解决此问题,这里我们采用memcached来共享session,让tomcat的session交由memcached去管理。
1、下载memcached
memcached官方网址:http://memcached.org 提供了linux版本
memcached for win32版下载地址:http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip
百度下载:百度下载
源码地址:https://code.google.com/p/memcached/
2、在windows下安装memcached
(1)、 下载好后里面只有一个memcached.exe,解压到c:/memcached/memcached.exe
(2)、将memcached安装成windows服务:
打开命令行窗口,进到c:/memcached,执行:memcached.exe -d install
3、准备好两个干净的tomcat
(1)、修改相应的端口号:
一个tomcat保持不变,另外一个tomcat将conf/server.xml中的端口号修改如下:
<Server port=”8005″ shutdown=”SHUTDOWN”> 将8005端口号改成其他的端口号,不能与另外一个tomcat的相同
<Connector connectionTimeout=”20000″ port=”8080″ protocol=”HTTP/1.1″ redirectPort=”8443″/> 将8080端口号改成其他的端口号
<Connector port=”8009″ protocol=”AJP/1.3″ redirectPort=”8443″/>将8009端口号改成其他的端口号
(2)、在两个tomcat,conf/context.xml配置文件中添加如下信息:
<Manager className=”de.javakaffee.web.msm.MemcachedBackupSessionManager”//将session交由memcached管理
memcachedNodes=”n1:localhost:11211″//11211是memcached的端口号
requestUriIgnorePattern=”.*.(ico|png|gif|jpg|css|js)$”
transcoderFactoryClass=”de.javakaffee.web.msm.JavaSerializationTranscoderFactory”
/>
(3)、准备一个jsp页面(index.jsp),内容如下:
sessionId: <%=session.getId()%>
(4)、在两个tomcat的webapps下各创建一个文件夹test,将index.jsp分别放置到test文件夹中
4、启动tomcat
tomcat-1中的sessionId
tomcat-2中的sessionId
两个sessionid一样,session共享成功!
注意:不能跨域session共享,跨域session共享的问题请大家多多指教
本文出自 luoshengsha.com,欢迎转载,转载时请注明出处及相应链接。