1. 程式人生 > >Tomcat叢集session如何共享詳解

Tomcat叢集session如何共享詳解

歡迎掃碼加入Java高知群交流


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

我們知道,session是一次瀏覽器和伺服器的互動的會話,當一個瀏覽器和伺服器連線之後就會產生一個會話。

當我們進行tomcat叢集的時候,會遇到這樣的問題,我們第一次請求分發到第一臺伺服器下的服務,第二次請求可能會被分發到另一臺伺服器下的服務。

這樣就會產生兩個會話,我們獲取到的sessionid值是不一樣的,此時我們兩臺伺服器通過session獲取到的一些值也不一樣,這樣就無法滿足我們的業務需求。

那有什麼辦法解決呢?下邊就講下通過tomcat的sessionmanager配合redis的方法儲存session,達到多個tomcat的session共享。

1、首先安裝好redis環境

可參考之前我寫的兩篇文章:

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高知群交流