多個tomcat各類序列化策略配置以下:
1、java默認序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "100"
transcoderFactoryClass="de.javakaffee.web.msm.JavaSerializationTranscoderFactory"
/>
lib增長jar包:
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jarjavascript
2、javolution序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "100"
copyCollectionsForSerialization="true"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"
/>
lib增長jar包
msm-javolution-serializer-cglib-1.3.0.jar
msm-javolution-serializer-jodatime-1.3.0.jar
spymemcached-2.10.3.jar
javolution-5.4.3.1.jar
msm-javolution-serializer-1.7.0.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jarcss
3、xstream序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.xstream.XStreamTranscoderFactory"
/>
lib增長jar包
xmlpull-1.1.3.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.6.jar
msm-xstream-serializer-1.7.0.jar
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jarjava
4、flexjson序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "100"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.json.JSONTranscoderFactory"
/>
lib增長jar包
flexjson-3.1.jar
msm-flexjson-serializer-1.7.0.jar
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jarweb
5、kryo序列化tomcat配置
conf/context.xml添加
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.100.208:11211 n2:192.168.100.208:11311"
lockingMode="auto"
sticky="false"
requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"
sessionBackupAsync= "false"
sessionBackupTimeout= "100"
copyCollectionsForSerialization="true"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
lib增長jar包
kryo-1.04.jar
minlog-1.2.jar
asm-3.2.jar
reflectasm-1.01.jar
kryo-serializers-0.11.jar
msm-kryo-serializer-1.7.0.jar
spymemcached-2.10.3.jar
memcached-session-manager-1.7.0.jar
memcached-session-manager-tc7-1.7.0.jar正則表達式
各類狀況配置如上,聽說kryo序列化效率比較快,未作測試。
選其一中方式,部署2個tomcat端口分別是8080和8181
啓動後,訪問刷新SessionID是否一致。
http://127.0.0.1:8080/t.jsp
SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
SessionIP:127.0.0.1
SessionPort:8080 json
http://127.0.0.1:8181/t.jsp
SessionID:37B7F153AB3567295B2FBF1831475F5F-n1
SessionIP:127.0.0.1
SessionPort:8181
測試結果SessionID一致。tomcat
配置實例請參考:http://download.csdn.net/detail/tianwei7518/6832985session
session存儲到memchached實現方案時。他主要功能是修改tomcat的session存儲機制,使之可以把session序列化存放到memcached中。
Manager標籤屬性說明
1.className 必須
類名:de.javakaffee.web.msm.MemcachedBackupSessionManagerapp
2.memcachedNodes 必須
memcached節點:此屬性應該包含全部運行的 memcached節點或者membase bucket的uri地址,每個memcached節點的屬性定義格式爲<id>:<host>:<port>, 多個節點定義直接使用空格或者逗號分隔,形如:memcachedNodes="n1:app01:11211,n2:app02:11211",若是隻 有單個的memcached節點,則<id>是可選項,只需配置<host>:<port>便可,形 如:memcachedNodes="localhost:11211"。
若是咱們配置的是membase,那麼從1.6.0版本開始,咱們能夠配置指定一個或者多個membase bucket uris,形如:http://host1:8091/pools,http://host2:8091/pools。Bucket 名稱和密碼經過屬性username,password來定義。membase buckets鏈接須要遵循memcached協議,傳輸數據經過二進制流方式。異步
3.failoverNodes 可選項
故障轉移節點:可選項,對非黏性session不可用,屬性必須包含memcached節點集羣的全部ids。節點id之間用空格或者逗號分隔。
4.username 可選項
從1.6.0版開始使用,而且是可選的。用來進行membase bucket或者SASL驗證,密碼能夠爲空。
5.password 可選項
從1.6.0版開始使用,而且是可選的。用來進行membase bucket或者SASL驗證,密碼能夠爲空。
6.memcachedProtocol 可選項
定義memcached協議,默認使用text文本,出屬性指明memcached使用的存儲協議。只支持text或者binary。
7.sticky 可選項
定義session方式爲黏性或非黏性,默認爲true,多個tomcat時需使用非黏性
8.lockingMode 可選項
只有非黏性session才使用,默認值爲none
none: 從不對session進行鎖定
all: session將一直被鎖定,知道請求結束
auto: 對於只讀請求,session將不會被鎖定,若是是非只讀請求,則session會被鎖定
uriPattern:<regexp>: 經過正則表達式的方式來對請求uri以及查詢字符串進行匹配,只有匹配上的纔會被鎖定。
9.requestUriIgnorePattern 可選項
此屬性是那些不能改備份Session的請求的正則表達式。若是像css,javascript,圖片等靜態文件被同一個Tomcat和同一個應用 上下文來提供,這些請求也會經過memcached-session-manager。可是這些請求在一個http會話中幾乎沒什麼改變,因此他們不必 觸發Session備份。因此那些靜態文件不必觸發Session備份,你就可使用此屬性定義。此屬性必須符合java regex正則規範。
如:".*\.(png|gif|jpg|css|js)$"
10.sessionBackupAsync 可選項
指定Session是否應該被異步保存到Memcached中。 若是被設置爲true,backupThreadCount設置起做用,若是設置false,經過sessionBackupTimeout設置的過時時間起做用。
11.backupThreadCount 可選項
用來異步保存Session的線程數,(若是sessionBackupAsync="true")。默認值爲cup的內核數。
12.sessionBackupTimeout 可選項
設置備份一個Session所用的時間,若是操做超過期間那麼保存失敗。此屬性只在sessionBackupAsync="false"是起做用。默認100毫秒
13.operationTimeout 可選項
從1.6.0版開始使用, 默認值爲1000
14.sessionAttributeFilter 可選項
此屬性是用來控制Session 中的那個屬性值保存到Memcached中的正則表達式。鄭則表達式被用來匹配Session中屬性名稱。如 sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"屬性保存到Memcached中。依賴於選擇的序列化策略。
15.transcoderFactoryClass 可選項
此屬性值是建立序列化和反序列化 保存到Memcached中的Session的編碼轉換器的工廠類名。這個指定的類必須實現了 de.javakaffee.web.msm.TranscoderFactory和提供一個無參的構造方法。例如其餘的有效的實如今其餘 packages/jars中提供如:msm-kryo-serializer,msm-xstrea-serializer和msm- javolution-serializer.
默認爲 de.javakaffee.web.msm.JavaSerializationTranscoderFactory
16.copyCollectionsForSerialization 可選項
默認值爲false。
17.customConverter 可選項
本身定義特殊的類註冊到kryo自定義轉換器中,實現序列化
18.enableStatistics 可選項
用來指定是否進行統計。 默認值爲true。
19.enabled 可選項 指定Session保存到Memcached中是否可用和是否能夠經過JMX進行改變。只用於粘性Session。 默認值爲true。