Java中tomcat memecached session 共享同步問(wèn)題的解決辦法
事件緣由:一個(gè)主項(xiàng)目“圖說(shuō)美物”,另外一個(gè)子功能是品牌商的入駐功能,是跟主項(xiàng)目分開(kāi)的項(xiàng)目,為了共享登錄的用戶信息,而實(shí)現(xiàn)session共享,倆個(gè)tomcat,一個(gè)tomcat6,一個(gè)tomcat7
web項(xiàng)目windows系統(tǒng)下實(shí)現(xiàn)session的共享
第一個(gè)步:
在倆個(gè)tomcat的context.xml這個(gè)文件中配置如下代碼:
<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來(lái)保存tomcat的session會(huì)話
寫(xiě)此文的主要目的是修正一下,部分網(wǎng)上有誤的地方。
前提條件:
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
安裝方法: 將這幾個(gè)包放到/usr/local/tomcat6.0/lib里。
2、編輯tomcat的配置文件。
<這一點(diǎn)很重要,因?yàn)榫W(wǎng)上大多數(shù)文章都是說(shuō)修改server.xml里配置;我試過(guò)但最終發(fā)現(xiàn)session的信息沒(méi)有存入到memcache中,我意識(shí)到這可能是配置有問(wèn)題。目前發(fā)現(xiàn)編輯context.xml這個(gè)文件,是可以立即將session丟入到memcache中的。>
# vim /usr/local/tomcat6.0/conf/context.xml
<Context>
<!-- 在這個(gè)字段下添加以下內(nèi)容,在節(jié)點(diǎn)入請(qǐng)?zhí)钊肽愕膍emcached服務(wù)器ip及端口號(hào)-->
<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、如何測(cè)試?
我目前的測(cè)試方法是,通過(guò)apache的mod_jk來(lái)實(shí)現(xiàn)負(fù)載均衡(之前的文章里有寫(xiě)),并且啟用tomcat之間的會(huì)話復(fù)制。
這樣的結(jié)果就是,seesion ID會(huì)隨著每次用戶的提交而變換節(jié)點(diǎn),但I(xiàn)D不變。
例如:
ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat2
下次提交就會(huì)變成: <節(jié)點(diǎn)切換了,但是ID不變>
ID CFC1ACAC6B0B8C27BEA76919F3A99BF8-n1.tomcat1
結(jié)合memcache的狀態(tài): <我之前在會(huì)話沒(méi)有成功的丟到memcached這里時(shí),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
我想通過(guò)以上的判斷,配置 是成功的!
相關(guān)文章
java實(shí)現(xiàn)可視化界面肯德基(KFC)點(diǎn)餐系統(tǒng)代碼實(shí)例
這篇文章主要介紹了java肯德基點(diǎn)餐系統(tǒng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
Spring Cloud負(fù)載均衡及遠(yuǎn)程調(diào)用實(shí)現(xiàn)詳解
這篇文章主要介紹了Spring Cloud負(fù)載均衡及遠(yuǎn)程調(diào)用實(shí)現(xiàn)詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
關(guān)于Java中的繼承和組合的一個(gè)錯(cuò)誤使用的例子
這篇文章主要介紹了關(guān)于Java中的繼承和組合的一個(gè)錯(cuò)誤使用的例子,需要的朋友可以參考下2016-08-08
Maven Plugin的@Mojo和@Execute的具體使用
本文主要介紹了Maven Plugin的@Mojo和@Execute的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Struts 2 實(shí)現(xiàn)Action的幾種方式
本篇文章主要介紹了Struts 2 實(shí)現(xiàn)Action的幾種方式,Struts 2框架下實(shí)現(xiàn)Action類有三種方式,有興趣的可以了解一下2017-10-10
Spring切入點(diǎn)表達(dá)式配置過(guò)程圖解
這篇文章主要介紹了Spring切入點(diǎn)表達(dá)式配置過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
使用Stargate訪問(wèn)K8ssandra的過(guò)程之Springboot整合Cassandra
這篇文章主要介紹了使用Stargate訪問(wèn)K8ssandra的過(guò)程之Springboot整合Cassandra,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10

