Tomcat集群session如何共享详解

欢迎扫码加入Java高知群交流


首先我们需要知道什么是session共享,共享session的目的是什么。

我们知道,session是一次浏览器和服务器的交互的会话,当一个浏览器和服务器连接之后就会产生一个会话。

当我们进行tomcat集群的时候,会遇到这样的问题,我们第一次请求分发到第一台服务器下的服务,第二次请求可能会被分发到另一台服务器下的服务。

这样就会产生两个会话,我们获取到的sessionid值是不一样的,此时我们两台服务器通过session获取到的一些值也不一样,这样就无法满足我们的业务需求。

那有什么办法解决呢?下边就讲下通过tomcat的sessionmanager配合redis的方法存储session,达到多个tomcat的session共享。

1、首先安装好redis环境

可参考之前我写的两篇文章:

http://blog.csdn.net/tjcyjd/article/details/40738163

http://blog.csdn.net/tjcyjd/article/details/51488054


2、配置好jdk环境和安装tomcat环境。


3、配置session共享。

redis实现方法:

打开tomcat目录conf下的context.xml配置文件

	<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />

	<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"

        host="localhost"

        port="6379"

        database="0"

        maxInactiveInterval="60"/>

memcached实现方法:

参考网址:http://code.google.com/p/memcached-session-manager/
修改 tomcat 的 conf 目录下的context.xml 文件:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"   
 memcachedNodes="n1:localhost:11211n2:localhost:11212"   
 failoverNodes="n2"   
 requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"   
 sessionBackupAsync="false"   
 sessionBackupTimeout="100"   
 transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
 copyCollectionsForSerialization="false"    />;

以上版本为 1.3 ,需要以下jar 包:
memcached-session-manager-1.3.0.jar
msm-javolution-serializer-1.3.0.jar
javolution-5.4.3.1.jar
memcached-2.4.2.jar


The end!

欢迎扫码加入Java高知群交流


猜你喜欢

转载自blog.csdn.net/tjcyjd/article/details/78145669