大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Spring Session教程
Spring Session常見的應用場景
Spring Session的執行流程
Session會話管理

Spring Session實現Session共享

同域名下相同項目(集群環境)實現Session共享

在同一個域名下,比如:www.p2p.com

同一個項目,部署了多臺tomcat,這就是典型的集群。我們的入門案例就屬于這種應用場景,只不過在實際開發的過程中,我們如果存在了tomcat集群,那么肯定會使用nginx進行負載均衡,那么這種情況下我們該如何處理。

1. 案例設計思路

我們將上一個階段的p2p項目實現集群部署下的Session共享,因為我們只是演示Session共享,所以我們試用一個簡易版本的p2p,在我給大家提供的資料中,該p2p中只包含p2p和dataservice,在Linux服務器上,我們準備三臺tomcat,其中兩臺部署p2p,并實現session共享,另一臺部署dataservice。

2. 架構圖

3. 實現步驟

① 使用Xftp將p2p上傳到tomcat9100和9200的webapps目錄下

② 使用Xftp將dataservice上傳到tomcat9300的webapps目錄下

③ 使用資源下的SQL腳本,重新創建數據庫的表

因為目前這個p2p的項目表結構和上一個階段的稍微有些區別,所以我們這里更新一下:

A、 啟動mysql數據庫

B、 通過MySQL客戶端工具Navivat創建新的庫

C、 指定數據庫名字為p2p2,字符集編碼為utf-8

D、 新建查詢,執行p2p-data.sql腳本

E、 執行成功后,表結構如下

④ 通過Xftp工具連接Linux,修改tomcat9300下的dataservice的連接信息

A、 使用記事本打開,修改redis.properties,保存

B、 修改datasource.properties,保存

C、 修改applicationContext-dubbo-provide.xml注冊中心的地址,并保存

⑤ 通過Xftp工具連接Linux,修改tomcat9100下的p2p的連接信息

這里只需要修改applicationContext-dubbo-consumer.xml文件中zk注冊中心的地址即可。

⑥ 通過Xftp工具連接Linux,修改tomcat9200下的p2p的連接信息

這里只需要修改applicationContext-dubbo-consumer.xml文件中zk注冊中心的地址即可。

⑦ 確保Linux系統上的各應用服務器啟動

注意:先通過ps –ef | grep XXX命令查看,如果已經啟動,就不需要再啟動了。

A、 啟動ZooKeeper服務器

B、 啟動MySQL服務器

C、 啟動Redis服務器

D、 啟動tomcat9300服務器(為了避免出錯先關閉,再啟動)

E、 啟動tomcat9100服務器(為了避免出錯先關閉,再啟動)

F、 啟動tomcat9200服務器(為了避免出錯先關閉,再啟動)

G、 直接訪問tomcat的方式,在瀏覽器輸入地址訪問tomcat9100和tomcat9200

⑧ 使用Nginx對tomcat9100和tomcat9200進行負載均衡

A、 負載均衡的配置,這里使用的是輪詢策略

upstream www.p2p.com{

???????? server 127.0.0.1:9100;

???????? server 127.0.0.1:9200;???????

}?

B、location匹配的配置,注意:這里對靜態資源的處理,我們暫時先注釋掉

location /p2p{

?????????????proxy_pass http://www.p2p.com;

????????}

如果要是實現了靜態代理,別忘了啟動所有的nginx服務器(負載|代理)

C、 重啟Nginx

D、 在瀏覽器中輸入地址,直接訪問Nginx服務器,實現負載均衡

⑨ Nginx對集群負載均衡之后,登錄不成功,但是直接訪問tomcat9100或者tomcat9200都是可以成功登錄的(Session丟失),分析原因:

因為默認我們負載均衡使用的是輪詢策略,每次發送請求給nginx服務器,都會切換tomcat服務器,這個時候沒有使用任何session共享策略,所以登錄不成功。

⑩ Nginx對集群負載均衡之后,Session共享方案

A、 修改nginx.conf配置文件,將輪詢策略修改為ip_hash

但是這種情況,一旦ip發生變化,或者某臺服務器出現故障,會重新分配,不穩定;

所以我們看下這種情況后,將ip_hash注釋掉。

B、 使用SpringSession

使用Spring Session實現session共享,我們不需要修改代碼,只要修改一些配置文件即可,為了演示方便,我們直接使用Xftp修改已經發布到tomcat上的項目;

向tomcat9100和tomcat9200的p2p項目中加jar包,這個jar包我已經準備好了。

修改tomcat9100和tomcat9200的p2p項目的web.xml配置文件,添加Spring Session過濾器,因為我們項目本身已經通過springMVC啟動了容器,所以spring監聽器不需要加了,直接從01-springsession-web中拷貝即可;

將01-springsession-web項目中resources下的applicationContext-session.xml和redis.properties拷貝到tomcat9100和tomcat9200的p2p項目WEB-INF/classes下

修改tomcat9100和tomcat9200的p2p項目WEB-INF/classes下applicationContext.xml文件,引入applicationContext-session.xml

重啟三臺tomcat服務器,瀏覽器訪問進行登錄測試,可以實現Session共享。

同域名下不同項目實現Session共享

在同一個域名下,有多個不同的項目(項目的上下文根不一樣)比如:

www.web.com/p2p

www.web.com/shop

如圖:

1. 做法:設置Cookie路徑為根/上下文

2. 案例設計思路

在01-springsession-web項目的基礎上,將本地tomcat9100的上下文根修改為p2p,將本地tomcat92

3. 實現步驟

① 打開Edit Configurations進行配置

② 在Deployment選項卡下,設置本地tomcat9100的Application context為/p2p

③ 在Deployment選項卡下,設置本地tomcat9200的Application context為/shop???????

④ 在idea中重新啟動本地的兩臺tomcat服務器

⑤ 在瀏覽器中訪問tomcat9100(p2p),設置session

⑥ 在瀏覽器中訪問tomcat9200(shop),獲取session

⑦ 分析Session共享失敗原因

我們通過瀏覽器提供的開發人員工具可以發現,這兩個請求的cookie的路徑(path)不一致,雖然我們已經加了Spring Session共享機制,但是后臺服務器認為這是兩個不同的會話(session),可以通過Redis客戶端工具(Redis Destop Mananger)查看,先清空,然后訪問,發現是維護了兩個不同的session,所以不能實現共享。

⑧ 解決方案 設置Cookie路徑為根/上下文

在applicationContext-session.xml文件中,加如下配置:

⑨ 在idea中重新啟動本地的兩臺tomcat服務器

⑩ 在瀏覽器中訪問tomcat9100(p2p),設置session

? 在瀏覽器中訪問tomcat9200(shop),獲取session

注意:測試的時候要先清空瀏覽器緩存。

同根域名不同二級子域名下的項目實現Session共享

同一個根域名,不同的二級子域名

比如:

www.web.com

beijing.web.com

nanjing.web.com

如圖:

1. 做法

• 設置Cookie路徑為根/上下文,項目名一樣的話,此步驟可以省略

• 設置cookie的域名為根域名 web.com

2. 案例設計思路

在01-springsession-web項目的基礎上,將本地tomcat9100的上下文根修改為p2p,將本地tomcat9200的上下文根修改為shop;在本機host文件中修改127.0.0.1的映射關系模擬不同的域名訪問。

3. 實現步驟

①  延續上面的案例的配置,兩臺本地tomcat服務器9100和9200,上下文根分別是p2p和shop

② 修改本地hosts文件,加入如下配置

③ 在idea中重新啟動本地的兩臺tomcat服務器

④ 在瀏覽器中訪問tomcat9100(p2p),設置session

注意,這里不再使用localhost訪問,而是使用我們映射的域名

⑤ 在瀏覽器中訪問tomcat9200(shop),獲取session

注意,這里也不再使用localhost訪問,而是使用我們映射的域名

⑥ 分析Session共享失敗原因

我們通過瀏覽器提供的開發人員工具可以發現,雖然這兩個cookie的路徑(path)都設置為了“/”,但是這兩個cookie的域名不一致,雖然我們已經加了Spring Session共享機制,但是后臺服務器同樣認為這是兩個不同的會話(session),可以通過Redis客戶端工具(Redis Destop Mananger)查看,先清空,然后訪問,發現是維護了兩個不同的session,所以不能實現共享,也就是說后臺區分是否同一個session和路徑和域名有關。

⑦ 解決方案 設置Cook ie的域名為根域名 web.com

在applicationContext-session.xml文件中,加如下配置:

注意:域名要和hosts文件中配置的域名后面一樣

⑧  在idea中重新啟動本地的兩臺tomcat服務器

⑨ 在瀏覽器中訪問tomcat9100(p2p),設置session

⑩ 在瀏覽器中訪問tomcat9200(shop),獲取session

注意:清空瀏覽器緩存???????

全部教程
主站蜘蛛池模板: 亚洲字幕 | 成人久久18免费网站 | 99久久免费中文字幕精品 | 欧美视频在线一区二区三区 | 香蕉色综合 | 四虎海外在线永久免费看 | 国产午夜精品尤物福利视频 | 精品自拍视频在线观看 | 国产成人久久精品 | 久久国产乱子伦精品在 | 亚洲美日韩 | 中文字幕精品视频在线观看 | 亚洲久久| 九九re6精品视频在线观看 | 狠久久| 亚洲精品国产福利在线观看 | 色婷婷激婷婷深爱五月小蛇 | 毛茸茸成熟女性老太的女bbww | 狠狠色噜噜狠狠狠狠98 | 免费可以直接观看的毛片 | 天天狠天天天天透在线 | 国产成年女一区二区三区 | 伊人久久青草青青综合 | 亚洲第一区香蕉_国产a | 亚洲精品一区二区乱码在线观看 | 国内精品久久久久久不卡影院 | 成人在线短视频 | 99re在线这里只有精品 | 亚洲欧美成人在线 | www.日本色| 欧美日韩国产亚洲一区二区三区 | 麻豆狠色伊人亚洲综合网站 | 欧美高清亚洲欧美一区h | 亚洲美女在线视频 | 天天做天天爱天天爽天天综合 | 久久手机在线视频 | 日日干狠狠干 | 欧美激情在线精品一区二区 | 久草视频精品 | 伊人久久久 | 国产午夜精品理论片久久影视 |