事件緣由:一個主項目“圖說美物”,另外一個子功能是品牌商的入駐功能,是跟主項目分開的項目,為了共享登錄的用戶信息,而實現session共享,倆個tomcat,一個tomcat6,一個tomcat7
web項目windows系統下實現session的共享
第一個步:
在倆個tomcat的context.xml這個文件中配置如下代碼:
1
2
3
4
5
6
7
8
9
10
|
<Manager className= "de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes= "n1:127.0.0.1:11211" lockingMode= "auto" sticky= "true" requestUriIgnorePattern= ".*\.(ico|png|gif|jpg|css|js)$" sessionBackupAsync= "false" sessionBackupTimeout= "100" transcoderFactoryClass= "de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" copyCollectionsForSerialization= "true" /> |
第二步:
Tomcat6下添加的jar包:
tomcat7下添加的jar包:
PS:利用memcache來保存tomcat的session會話
寫此文的主要目的是修正一下,部分網上有誤的地方。
前提條件:
1、memcached正常工作了
2、tomcat 正常工作了。
1、安裝方法及安裝包
javolution-5.4.3.1.jar
memcached-2.4.2.jar
memcached-session-manager-1.3.0.jar
msm-javolution-serializer-cglib-1.3.0.jar
msm-javolution-serializer-jodatime-1.3.0.jar
安裝方法: 將這幾個包放到/usr/local/tomcat6.0/lib里。
2、編輯tomcat的配置文件。
<這一點很重要,因為網上大多數文章都是說修改server.xml里配置;我試過但最終發現session的信息沒有存入到memcache中,我意識到這可能是配置有問題。目前發現編輯context.xml這個文件,是可以立即將session丟入到memcache中的。>
1
2
3
4
5
6
7
8
9
10
11
|
# vim /usr/local/tomcat6. 0 /conf/context.xml <Context> <!-- 在這個字段下添加以下內容,在節點入請填入你的memcached服務器ip及端口號--> <Manager className= "de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes= "n1:10.254.41.197:11211" requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$" sessionBackupAsync= "false" sessionBackupTimeout= "100" transcoderFactoryClass= "de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization= "false" /> </Context> |
3、如何測試?
我目前的測試方法是,通過apache的mod_jk來實現負載均衡(之前的文章里有寫),并且啟用tomcat之間的會話復制。
這樣的結果就是,seesion ID會隨著每次用戶的提交而變換節點,但ID不變。
例如:
ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat2
下次提交就會變成: <節點切換了,但是ID不變>
ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat1
結合memcache的狀態: <我之前在會話沒有成功的丟到memcached這里時,cmd_set 為0 >
# perl memcached-tool.pl 10.254.41.197:11211 stats
cmd_get 27
cmd_set 15
get_hits 12
# perl memcached-tool.pl 10.254.41.197:11211 stats
cmd_get 31
cmd_set 17
get_hits 14
我想通過以上的判斷,配置 是成功的!