黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Spring Session教程
Spring Session常見的應(yīng)用場景
Spring Session的執(zhí)行流程
Session會話管理

Spring Session實(shí)現(xiàn)Session共享

同域名下相同項(xiàng)目(集群環(huán)境)實(shí)現(xiàn)Session共享

在同一個(gè)域名下,比如:www.p2p.com

同一個(gè)項(xiàng)目,部署了多臺tomcat,這就是典型的集群。我們的入門案例就屬于這種應(yīng)用場景,只不過在實(shí)際開發(fā)的過程中,我們?nèi)绻嬖诹藅omcat集群,那么肯定會使用nginx進(jìn)行負(fù)載均衡,那么這種情況下我們該如何處理。

1. 案例設(shè)計(jì)思路

我們將上一個(gè)階段的p2p項(xiàng)目實(shí)現(xiàn)集群部署下的Session共享,因?yàn)槲覀冎皇茄菔維ession共享,所以我們試用一個(gè)簡易版本的p2p,在我給大家提供的資料中,該p2p中只包含p2p和dataservice,在Linux服務(wù)器上,我們準(zhǔn)備三臺tomcat,其中兩臺部署p2p,并實(shí)現(xiàn)session共享,另一臺部署dataservice。

2. 架構(gòu)圖

3. 實(shí)現(xiàn)步驟

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

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

③ 使用資源下的SQL腳本,重新創(chuàng)建數(shù)據(jù)庫的表

因?yàn)槟壳斑@個(gè)p2p的項(xiàng)目表結(jié)構(gòu)和上一個(gè)階段的稍微有些區(qū)別,所以我們這里更新一下:

A、 啟動mysql數(shù)據(jù)庫

B、 通過MySQL客戶端工具Navivat創(chuàng)建新的庫

C、 指定數(shù)據(jù)庫名字為p2p2,字符集編碼為utf-8

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

E、 執(zhí)行成功后,表結(jié)構(gòu)如下

④ 通過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系統(tǒng)上的各應(yīng)用服務(wù)器啟動

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

A、 啟動ZooKeeper服務(wù)器

B、 啟動MySQL服務(wù)器

C、 啟動Redis服務(wù)器

D、 啟動tomcat9300服務(wù)器(為了避免出錯(cuò)先關(guān)閉,再啟動)

E、 啟動tomcat9100服務(wù)器(為了避免出錯(cuò)先關(guān)閉,再啟動)

F、 啟動tomcat9200服務(wù)器(為了避免出錯(cuò)先關(guān)閉,再啟動)

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

⑧ 使用Nginx對tomcat9100和tomcat9200進(jìn)行負(fù)載均衡

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

upstream www.p2p.com{

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

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

}?

B、location匹配的配置,注意:這里對靜態(tài)資源的處理,我們暫時(shí)先注釋掉

location /p2p{

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

????????}

如果要是實(shí)現(xiàn)了靜態(tài)代理,別忘了啟動所有的nginx服務(wù)器(負(fù)載|代理)

C、 重啟Nginx

D、 在瀏覽器中輸入地址,直接訪問Nginx服務(wù)器,實(shí)現(xiàn)負(fù)載均衡

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

因?yàn)槟J(rèn)我們負(fù)載均衡使用的是輪詢策略,每次發(fā)送請求給nginx服務(wù)器,都會切換tomcat服務(wù)器,這個(gè)時(shí)候沒有使用任何session共享策略,所以登錄不成功。

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

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

但是這種情況,一旦ip發(fā)生變化,或者某臺服務(wù)器出現(xiàn)故障,會重新分配,不穩(wěn)定;

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

B、 使用SpringSession

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

向tomcat9100和tomcat9200的p2p項(xiàng)目中加jar包,這個(gè)jar包我已經(jīng)準(zhǔn)備好了。

修改tomcat9100和tomcat9200的p2p項(xiàng)目的web.xml配置文件,添加Spring Session過濾器,因?yàn)槲覀冺?xiàng)目本身已經(jīng)通過springMVC啟動了容器,所以spring監(jiān)聽器不需要加了,直接從01-springsession-web中拷貝即可;

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

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

重啟三臺tomcat服務(wù)器,瀏覽器訪問進(jìn)行登錄測試,可以實(shí)現(xiàn)Session共享。

同域名下不同項(xiàng)目實(shí)現(xiàn)Session共享

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

www.web.com/p2p

www.web.com/shop

如圖:

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

2. 案例設(shè)計(jì)思路

在01-springsession-web項(xiàng)目的基礎(chǔ)上,將本地tomcat9100的上下文根修改為p2p,將本地tomcat92

3. 實(shí)現(xiàn)步驟

① 打開Edit Configurations進(jìn)行配置

② 在Deployment選項(xiàng)卡下,設(shè)置本地tomcat9100的Application context為/p2p

③ 在Deployment選項(xiàng)卡下,設(shè)置本地tomcat9200的Application context為/shop???????

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

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

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

⑦ 分析Session共享失敗原因

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

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

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

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

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

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

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

同根域名不同二級子域名下的項(xiàng)目實(shí)現(xiàn)Session共享

同一個(gè)根域名,不同的二級子域名

比如:

www.web.com

beijing.web.com

nanjing.web.com

如圖:

1. 做法

• 設(shè)置Cookie路徑為根/上下文,項(xiàng)目名一樣的話,此步驟可以省略

• 設(shè)置cookie的域名為根域名 web.com

2. 案例設(shè)計(jì)思路

在01-springsession-web項(xiàng)目的基礎(chǔ)上,將本地tomcat9100的上下文根修改為p2p,將本地tomcat9200的上下文根修改為shop;在本機(jī)host文件中修改127.0.0.1的映射關(guān)系模擬不同的域名訪問。

3. 實(shí)現(xiàn)步驟

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

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

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

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

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

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

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

⑥ 分析Session共享失敗原因

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

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

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

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

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

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

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

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

全部教程
主站蜘蛛池模板: a级人体片免费观看网站 | 欧美成人片在线 | 欧美日韩麻豆 | 波多野结衣不卡 | 成人免费观看完整视频 | 久久久久久午夜精品 | 日本国产最新一区二区三区 | 久久91精品久久久久久水蜜桃 | 国产激情视频在线播放 | 手机看片一区二区 | 国产精品成人免费综合 | 午夜伦理视频 | 六月丁香在线视频 | 五月开心综合 | 国产成人精品福利网站人 | 亚洲黄色影片 | 九色97 | 亚洲欧美在线观看视频 | 亚洲九九九| 午夜影院啊啊啊 | 免费观看成人羞羞视频网站观看 | 欧美另类成人 | 日韩精品a在线视频 | 日本视频免费高清一本18 | 国产又黄又湿又刺激不卡网站 | 成人午夜在线观看国产 | 韩国伦理片在线 | 国产精品亚洲二区在线 | 国产欧美日韩在线观看无需安装 | 怡春院免费 | 亚洲欧美乱综合图片区小说区 | 中文字幕日韩精品一区口 | 韩国成人理伦片免费 | 性激烈的欧美三级视频中文字幕 | 婷婷中文字幕 | 亚洲精品视频在线播放 | 最色网站入口 | 天天综合天天看夜夜添狠狠玩 | 国产成人精品久久亚洲高清不卡 | 青青草狠狠操 | 欧美亚洲高清日韩成人 |