日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

tomcat session 共享

發布時間:2025/6/17 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tomcat session 共享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. nginx+tomcat7+memcached

安裝JDK7
sudo apt-get install java7-jdk

安裝tomcat7
Tomcat7下載地址
http://mirror.bjtu.edu.cn/apache/tomcat/tomcat-7/v7.0.34/bin/

找到apache-tomcat-7.0.34.tar.gz
解壓 sudo tar xvzf apache-tomcat-7.0.34.tar.gz
移動tomcat sudo mv apache-tomcat-7.0.34 /data/game-web/

啟動tomcat
/data/game-web/apache-tomcat-7.0.34/bin/startup.sh
查看是否正常啟動,tomcat 端口默認為 8080

關閉tomcat
/data/game-web/apache-tomcat-7.0.34/bin/ shutdown.sh


Tomcat7必須增加java包,下載地址:
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-tc7-1.6.1.jar
http://memcached-session-manager.googlecode.com/files/memcached-session-manager-1.6.1.jar
http://spymemcached.googlecode.com/files/spymemcached-2.8.0.jar

下載好后復制到/data/game-web/apache-tomcat-7.0.34/lib 目錄下

修改/data/game-web/apache-tomcat-7.0.34/ server.xml 文件找到Engine標簽修改如下內容
<Engine name="Catalina" defaultHost="localhost">

修改
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

每一個 t omcat 的jvmRoute名都不同

修改/data/game-web/apache-tomcat-7.0.34/context.xml 文件找到Context 標簽增加如下內容

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="node1:localhost:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sticky="false"
sessionBackupAsync="false" />

或者修改/data/game-web/apache-tomcat-7.0.34/server.xml 文件在Host標簽增加如下內容
<Context path="" docBase="/web/url" reloadable="true" crossContext="true" >

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="node1:192.168.130.101:11211"
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
sticky="false"
sessionBackupAsync="false"
/>
</ Context>


Manager標簽屬性說明:

className此屬性是必須的。

memcachedNodes此屬性是必須的。這個屬性必須包含你所有運行的memcached節點。每個節點的定義格式為<id>:<host>:<port>。多個之間用空格或半角逗號隔開(如:memcachedNodes="n1:localhost:11211,n2:localhost:11212")。如果你設置單個memcache節點<id>是可選的,所以它允許設置為<host>:<port>(memcachedNodes="localhost:11211")。

failoverNodes可選項,屬性只能用在非粘連Session機制中。此屬性必須包含memcached節點的Id,此節點是Tomcat作為備份使用。多個之間用空格或逗號隔開

memcachedProtocol可選項,默認為text。出屬性指明memcached使用的存儲協議。只支持text或者binary。

sticky 可選項,默認為true。
指定使用粘性的還是非粘性的Session機制。

lockingMode 可選項, 此屬性只對非粘性Session有用,默認為none。
指定非粘性Session的鎖定策略。他的只有
(1)、none:從來不加鎖
(2)、all: 當請求時對Session鎖定,直到請求結束
(3)、auto:對只讀的request不加鎖,對非只讀的request加鎖
(4)、uriPattern:<regexp>: 使用正則表達式來比較requestRUI + "?" + queryString來決定是否加鎖,

requestUriIgnorePattern 可選項

此屬性是那些不能改備份Session的請求的正則表達式。如果像css,javascript,圖片等靜態文件被同一個Tomcat和同一個應用上下文來提供,這些請求也會通過memcached-session-manager。但是這些請求在一個http會話中幾乎沒什么改變,所以他們沒必要觸發Session備份。所以那些靜態文件沒必要觸發Session備份,你就可以使用此屬性定義。此屬性必須符合java regex正則規范。

sessionBackupAsync 可選項,默認true
指定Session是否應該被異步保存到Memcached中。 如果被設置為true,backupThreadCount設置起作用,如果設置false,通過sessionBackupTimeout設置的過期時間起作用。

backupThreadCount 可選項,默認為CPU內核數。用來異步保存Session的線程數(如果sessionBackupAsync="true")。

sessionBackupTimeout 可選項,默認100,單位毫秒
設置備份一個Session所用的時間,如果操作超過時間那么保存失敗。此屬性只在sessionBackupAsync="false"是起作用。默認100毫秒

sessionAttributeFilter 可選項 從1.5.0版本有此屬性是用來控制Session中的那個屬性值保存到Memcached中的正則表達式。鄭則表達式被用來匹配Session中屬性名稱。如

sessionAttributeFilter="^(userName|sessionHistory)$" 指定了只有"userName"和"sessionHistory"屬性保存到Memcached中。依賴于選擇的序列化策略。

transcoderFactoryClass 可選,默認為
de.javakaffee.web.msm.JavaSerializationTranscoderFactory 此屬性值是創建序列化和反序列化保存到Memcached中的Session的編碼轉換器的工廠類名。這個指定的類必須實現了de.javakaffee.web.msm.TranscoderFactory和提供一個無參的構造方法。例如其他的有效的實現在其他packages/jars中提供如:msm-kryo-serializer,msm-xstrea-serializer和msm-javolution-serializer.

copyCollectionsForSerialization 可選項,默認false。

customConverter 可選項


enableStatistics 可選項,默認true用來指定是否進行統計。

enabled 可選項,默認true指定Session保存到Memcached中是否可用和是否可以通過JMX進行改變。只用于粘性Session。

?

?


安裝nginx
sudo apt-get install nginx

修改 nginx.conf 文件
找到http {},在http{}增加以下內容

upstream monitor.zqgame.com {
ip_hash; #同一個客戶IP的請求分配給同一個后臺服務器
server 192.168.120.17:80 ;#應用 1
server 192.168.120.16:80 ;#應用2

}
# monitor.zqgame.com 為攔截的域名
server {
server_name monitor.zqgame.com;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://monitor.zqgame.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log /log/nginx/monitor.zqgame.com_access.log access;
}

?

測試:
結果就是,seesion ID會隨著每次用戶的提交而變換節點,但ID不變。
例如:
JSESSIONID=CFC1ACAC6B0B8C27BEA76919F3A99BF8-node1.jvm1
CFC1ACAC6B0B8C27BEA76919F3A99BF8為session會話id
node1為memcache 的id
jvm1為 jvmRoute 的值


后臺打印日志
/data/game-web/apache-tomcat-7.0.34/conf/logging.properties 文件中添加de.javakaffee.web.msm.level=FINE , 就可以在
catalina.out 的日志中看到詳細的session 存取情況

轉載于:https://www.cnblogs.com/shiyuelp/p/7063769.html

總結

以上是生活随笔為你收集整理的tomcat session 共享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。