##這次我們在上篇的基礎上實現session 共享問題
Nginx機器:192.168.1.108
兩台tomcat機器分別是:192.168.1.168
## 192.168.1.178
#'##;’S」頁上中新增問題時在測試頁面上共享問題》。如下程式碼
SessionId:<%= session.getId() %>
<% String username =(String)session.getAttribute("username" );
if(!"".equals(username)&& username!=null){
out.print("------username is "+session.getAttribute("username"));
} else {
out.print("------start username is null");
session.setAttribute("username", "lxs" session.setAttribute("username", "lxs" session.setAttribute("username", "lxs" ). "------now username is "+session.getAttribute("username"));
## %>
#
#此時,透過nginx 造訪時第一次造訪的是178那台機器
#再次刷新時,訪問了168那台機器
##可以看出,此時session 是不共享的,在群集下,分別創建了session
二:用redis實作session 共享 實作 session 共享的方法有很多種,而這次用的是將session存在redis 中實現共享。
1.安裝redis
(如何安裝請看)redis也是安裝在192.168.1.108,跟Nginx安裝在同一台機器了
2.把需要的jar包分別拷貝到兩個tomcat 的lib目錄下
3. 修改context.xml 裡的內容
分別在tomcat/conf /context.xml裡加入以下內容
host="192.168.1.108 maxInactiveInterval="60" />
其中className 是固定的,取得是jar包裡的實作的類別
host 是redis 的主機名稱 port是redis埠 database 是把session存放在redis的第幾個函式庫裡,
maxInactiveInterval表示session存活時間
4.再次測試session共享
#經過前三步,已經實現了redis下的session共享問題,再次測試
分別啟動redis,nginx,以及tomcat 再次造訪http://192.168.1.108:7777/nginxTest/
#此時nginx 先轉送到178那台機器,此時,session裡的username是為空的,然後往
username裡存放了一個值,然後印出了值
#
再次造訪http://192.168.1.108:7777/nginxTest/,此時nginx 轉到了168那台機器
此時sessionid 跟178的一樣。同時username 也是有值的,直接印出了值
這說明了此時session 是共享的,同時在redis裡也存進去了對應session
以上是用redis實作tomcat集群下的session共享的詳細內容。更多資訊請關注PHP中文網其他相關文章!