Tomcat叢集session如何共享詳解
阿新 • • 發佈:2019-02-12
歡迎掃碼加入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高知群交流