首頁  >  文章  >  Java  >  用redis實作tomcat集群下的session共享

用redis實作tomcat集群下的session共享

巴扎黑
巴扎黑原創
2017-06-26 09:22:001482瀏覽

上篇實現了 LINUX中NGINX反向代理下的TOMCAT叢集()

##這次我們在上篇的基礎上實現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

#    port="6379"                 

      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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn