tomcat伺服器redis管理session
session伺服器的2種方式:
第一種是在專案中的程式碼中修改
第二種是修改tomcat中的原始碼,把存放session的地方更改到redis伺服器上
本文使用的是第二種方法,因為這樣不會對專案進行修改。並且開發人員獲取session的方式和以前相同
*本帖會從tomcat的匯入eclipse開始,如果只是想使用,可以直接跳到結尾部分。
一、編譯tomcat原始碼
1.tomcat是由ant編譯而成的,所以需要下載ant
下載後新增環境變數ANT_HOME,PATH
使用然後進入cmd下執行 ant -version檢視是否安裝成功
2.下載tomcat原始碼
進入到tomcat根目錄進行原始碼編譯(該編譯過程可能會受網路影響)
ant download
ant
依賴包的下載會下載到預設的/usr/share/java目錄下
修改ant下載依賴包路徑修改,需要拷貝將“build.properties.default” 修改為 “build.properties”並且修改其中base.path後面的路徑
編譯後會在根目錄下產生output資料夾,內為編譯後的class檔案
二、匯入tomcat原始碼
我這裡使用的是eclipse
1.建立一個java專案
2.選擇File - > import -> File System,在From directory中選擇tomcat原始碼包中的java和test兩個資料夾,在Into folder中選擇我們剛新建的Tomcat8專案,Finish,然後記得將這兩個資料夾標記為source code(怎麼標記?右鍵選擇者資料夾 -> Build Path -> Use as Source Folder)。
3.引入jar包,所需jar包在編譯時下載的依賴包內都能找到。
4.拷貝編譯後產生的output/build下的conf和lib到專案根目錄中(webapps可選)
5.找到Bootstrap.java類執行tomcat
三、修改tomcat自帶的session儲存方式(本例為tomcat8下)
四、實際案例
把之前編譯好的tomcat-redis-session-manager.jar和兩個依賴包jedis-2.7.2.jar,commons-pool2-2.0.jar放入正式tomcat,lib目錄下
修改conf目錄下的context.xml檔案
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="localhost" <!-- optional: defaults to "localhost" -->
port="6379" <!-- optional: defaults to "6379" -->
database="0" <!-- optional: defaults to "0" -->
maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) -->
sessionPersistPolicies="PERSIST_POLICY_1,PERSIST_POLICY_2,.." <!-- optional -->
sentinelMaster="SentinelMasterName" <!-- optional -->
sentinels="sentinel-host-1:port,sentinel-host-2:port,.." <!-- optional --> />
然後啟動tomcat伺服器。你就會看到你的session已經儲存到你配置的redis伺服器中。