友情提示: session共享需要在負載均衡的環境基礎上搭建,負載均衡可以參考http://www.cnblogs.com/dahuandan/p/6753646.html
背景
使用反向代理服務器會引起session sticky(會話粘貼),意思是用戶發起的多次請求被分發到多台服務器,請求的session沒有被共享,解決這個問題的方案有很多種,在考慮性能、穩定以及自身架構的基礎上,決定采取redis緩存會話實現session共享。
配置
tomcat配置
1、修改context.xml,在<Context>節點末尾內添加如下配置:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="127.0.0.1" port="7000" password="123456" database="0" maxInactiveInterval="60" />
2、在tomcat7的lib目錄下添加以下jar:
commons-pool-1.6.jar
jedis-2.1.0.jar
tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
spring整合jar包
commons-pool2-2.4.2.jar
jedis-2.5.1.jar
spring-data-redis-1.4.2.RELEASE.jar
測試
瀏覽器打開兩個窗口,分別訪問測試頁面,我們可以看到兩個tomcat服務器的sessionId一致: