1. 程式人生 > >Tomcat7基於Redis的Session共享實戰一

Tomcat7基於Redis的Session共享實戰一

本文主要介紹如何使用redis對tomcat7的session進行託管。

1、安裝Redis
redis安裝比較簡單,此處略過。

2、配置兩個Tomcat
在本機上配置兩個Tomcat,分別為tomcat7-8081、tomcat7-8082。

編制兩個index.jsp頁面,分別放入tomcat7-8081\webapps\ROOT、tomcat7-8082\webapps\ROOT目錄下,index.jsp頁面內容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>獲取session id</title>
</head>
<body>
    Session Id : 
<%= request.getSession().getId() %> </body> </html>

tomcat7-8081訪問地址:http://localhost:8081,瀏覽顯示內容:Session Id : A86BC413D12339380DD7B0079C50D9EB
tomcat7-8082訪問地址:http://localhost:8082,瀏覽顯示內容:Session Id : A86BC413D12339380DD7B0079C50D9EB

3、拷貝tomcat需要的jar
將如下幾個jar拷貝到${TOMCAT_HOME}/lib下

tomcat-redis-session-manager-VERSION.jar 
jedis
-2.5.2.jar commons-pool2-2.2.jar

4、配置tomcat
編輯${TOMCAT_HOME}/conf/context.xml,在context中加入

<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
       host="localhost"
       port
="6379" database="0" maxInactiveInterval="60" />

其中host和port為redis的ip和埠

至此配置完成,tomcat會使用redis來託管session。

5、測試
分別啟動2個Tomcat,在終端看到了如下資訊,表明redis的session manager初始化成功。

...
十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal
資訊: Attached to RedisSessionHandlerValve
十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager initializeSerializer
資訊: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer
十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal
資訊: Will expire sessions after 1800 seconds
十月 15, 2015 4:52:39 下午 org.apache.catalina.startup.HostConfig deployDirectory
資訊: Deployment of web application directory E:\WorkFolder\Temp\Redis-Session\apache-tomcat1-8080\webapps\manag
十月 15, 2015 4:52:39 下午 org.apache.catalina.startup.HostConfig deployDirectory
資訊: Deploying web application directory E:\WorkFolder\Temp\Redis-Session\apache-tomcat1-8080\webapps\ROOT
十月 15, 2015 4:52:39 下午 org.apache.catalina.startup.TldConfig execute
資訊: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a co
十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal
資訊: Attached to RedisSessionHandlerValve
十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager initializeSerializer
資訊: Attempting to use serializer :com.radiadesign.catalina.session.JavaSerializer
十月 15, 2015 4:52:39 下午 com.radiadesign.catalina.session.RedisSessionManager startInternal
資訊: Will expire sessions after 1800 seconds
...

開啟瀏覽器,輸入http://localhost:8081回車,
開啟瀏覽器,輸入http://localhost:8082回車

獲取的SESSIONID是同一個,說明成功了,其中D5E4019A04709CD68F94378211DA1B60就是SESSIONID

啟動redis自身的客戶端:redis-cli.exe -h 127.0.0.1 -p 6379
執行"keys *",會看到SESSIONID:D5E4019A04709CD68F94378211DA1B60;
執行"get D5E4019A04709CD68F94378211DA1B60",得到SESSIONID的值。


經測試,只要redis不重啟,使用者session就不會丟失。雖然session儲存到了redis中,但是如果redis掛掉,session也會丟失。為了解決此問題,可對redis進行叢集。
注意:放到redis中的物件必須為可序列化物件。因此,在程式設計過程中,放置的session物件必須實現serialiable介面。

相關推薦

Tomcat7基於Redis的Session共享實戰

本文主要介紹如何使用redis對tomcat7的session進行託管。 1、安裝Redisredis安裝比較簡單,此處略過。 2、配置兩個Tomcat在本機上配置兩個Tomcat,分別為tomcat7-8081、tomcat7-8082。 編制兩個index.jsp頁面,分別放入tomcat7-808

CAS4.0.3服務的搭建實戰基於普通web專案】

一、從官網下載對應的war包 1.地址一:https://github.com/apereo/cas/releases/tag/v4.0.3 2.地址二:http://central.maven.org/maven2/org/jasig/cas/cas-server-webapp/4.0

61、Heartbeat V1基於NFS共享儲存的WEB高可用實戰

1、涉及機器 192.168.130.61 node1.ha.com 192.168.130.62 node2.ha.com 192.168.130.63 node3.ha.com 2、安裝heartbeat V2 rpm -ivh https://mirrors.aliyun.com/ep

Heartbeat V2基於NFS共享儲存的WEB高可用實戰基於heartbeat-gui配置)

1、涉及機器 192.168.130.61 node1.ha.com 192.168.130.62 node2.ha.com 192.168.130.63 node3.ha.com 2、安裝heartbeat V2 rpm -ivh https://mirrors.aliyun.com/ep

63、Heartbeat V2基於NFS共享儲存的MySQL高可用實戰(heartbeat-gui)

1、涉及機器 192.168.130.61 node1.ha.com 192.168.130.62 node2.ha.com 192.168.130.63 node3.ha.com 2、安裝heartbeat V2 rpm -ivh https://mirrors.aliyun.com/ep

[HTML5之APP實戰]基於ionic開發的款KTV移動應用

摘要 前期一直介紹web 移動開發的一些基本知識,而沒有給大家演示過一個專案,今天給大家給大家詳細介紹一下如何利用HTML5來完成一個移動APP應用.在正式介紹前,希望大家能搞明白以下幾個問題. 請大家思考以下幾個問題? 問題一 H

Tomcat7基於Redis的Session共享

Tomcat7/8基於Redis(Sentinel)的Session共享實戰 筆者線上環境的多個tomcat需要共享session 基於epel源安裝、啟動redis yum install redis -y && /etc

tensorflow實戰---基於線性迴歸簡單實現mnist手寫體識別

Mnist手寫體識別是tensorflow的入門經典教程,此處的mnist的手寫體識別率達到了91%,優化演算法為梯度下降演算法,啟用函式為softmax迴歸,沒有中間層,基本步驟可以分為七步。 1、設定變數 2、設定資料與結果的計算關係(設定圖) 3、設定優化演算法(梯度

備份windows共享最近天文件

備份windows共享文件 最近一天文件 #!/bin/bashsrc=/root/server/ic/dst=/var/server_data/ic/dateTime=`date +%Y%m%d-%H:%M`mount -t cifs -o username=everyone,password=""

Odoo實戰:空白模塊創建

sequence desc 這就是 ons ins pan sta 詳細 onf 一:新建模塊目錄 我們在openerp-server.conf中配置了模塊的存放路徑,一般為 XXXX\odoo\addons 實際開發時,為了避免與odoo自帶模塊所混淆,我們一般把自己的

Hangfire實戰

src 代碼 framework 方法 打開 http 存儲 provide def Hangfire:一個開源的任務調度框架 開發環境:VS2017,SQL Server 2012,.NET Framework 4.5 項目類型:控制臺應用程序 1.在vs的程序包控制臺中

多線程實戰() : 交通燈管理系統

紅綠燈 ted 無法 -s let .net vertical 維護 content 一. 項目要求: 模擬實現十字路口的交通燈管理系統邏輯。詳細需求例如以下: 1. 異步隨機生成依照各個路線行駛的車輛。 比如: 由南向而來去往北向的車輛 ---

solr分布式索引【實戰、分片配置讀取:工具類configUtil.java,讀取配置代碼片段,配置實例】

hset fileinput string lose eas hash hashset mod bject 1 private static Properties prop = new Properties(); 2 3 private stati

機器學習實戰()k-近鄰算法

復雜 ssi bsp 體重 工具 等級 lap 問題 種類   轉載請註明源出處:http://www.cnblogs.com/lighten/p/7593656.html 1.原理   本章介紹機器學習實戰的第一個算法——k近鄰算法(k Nearest Neighbor

openvpn部署之快速入門實戰+鍵部署openvpn腳本

openvpn軟件環境: Centos6.9 x64 openvpn-2.4.3-1.el6.x86_64.rpm easy-rsa-2.2.2-1.el6.noarch.rpm #推薦使用2.2的版本 pkcs11-helper-1.11-3.el6.x86_64.rpm網絡環

機器學習實戰(kNN)

.com block 個數 indices 操作 來看 空間 計算機 python3 機器學習實戰一(kNN) 跟著老師做一個項目,關於行車記錄儀識別前方車輛,並判斷車距,不太好做。本來是用OpenCV,做著做著,突然發現需要補習一下機器學習的內容。《機器學習實戰(mach

汽車之家店鋪數據抓取 DotnetSpider實戰[]

@class 詳情 nbsp 實體 比較 request else post 好的 一、背景 春節也不能閑著,一直想學一下爬蟲怎麽玩,網上搜了一大堆,大多都是Python的,大家也比較活躍,文章也比較多,找了一圈,發現園子裏面有個大神開發了一個DotNetSpider的開源

項目實戰

項目需求:1.PC-12 / 13 / 14基於需求進行編址2.PC-12 與PC-14互通3.PC-13 與PC-14互通4.PC-12 與PC-14不通5.交換機之間動態學習VLAN信息6.實現LSW8和LSW9之間的強壯性7.IP地址規劃PC-12 : 192.168.1.1/25PC-13 : 192

CentOS6 MySql5.5.53編譯安裝+多實例實戰()

mysql 編譯安裝 數據初始化 第一個裏程碑:安裝前準備(1)克隆一個模板機器(使用centos6),克隆完做快照(2)IP 10.0.0.200 主機名whw(3)下載好5.5.53第二個裏程碑:開始編譯安裝(1)安裝所需依賴yum install cmake ncurses-devel

Ubuntu機器學習python實戰()k-近鄰算法

0.12 繪圖 http tps eat 2.6 .sh 輸入 重復 2018.4.18Python機器學習記錄 一.Ubuntu14.04安裝numpy 1.參考網址 2.安裝代碼: 在安裝之前建議更新一下軟件源 : sudo apt-get update 如果py