Tomcat7基于Redis的Session共享实战一

时间:2022-09-05 22:21:53

本文主要介绍如何使用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

备注:在同一台服务器上配置多个Tomcat教程

3、拷贝tomcat需要的jar
将如下几个jar拷贝到${TOMCAT_HOME}/lib下

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

备注: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回车
Tomcat7基于Redis的Session共享实战一
获取的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共享实战一的更多相关文章

  1. Tomcat7基于Redis的Session共享实战二

    目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无 ...

  2. &lbrack;转&rsqb;Tomcat7基于Redis的Session共享

    转自:http://blog.csdn.net/catoop/article/details/48603891 目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均 ...

  3. Tomcat7基于redis的session共享

    一,项目需求 因开发人员在登录后台时需要反复认证,tomcat反复切换,所以给运维组提出需求,解决session共享问题. 二,解决方法 环境:基于Centos6.8 Jdk 版本   java ve ...

  4. 项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享

    因业务发展需要现在的系统不足以支撑现在的用户量,于是我们在一周之前着手项目的性能优化与分布式部署的相关动作. 概况 现在的系统是基于RabbitHub(一套开源的开发时框架)和Rabbit.WeiXi ...

  5. &period;Net分布式架构&lpar;二&rpar;:基于Redis的Session共享

    一:Session简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台web服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台web服务器建立连 ...

  6. Tomcat 7集群基于redis的session共享设置

    经过测试之后,发现是tomcat中redis相关jar包问题,替换jar包后A产品运行正常. tomcat/lib目录下将commons-pool2-2.1.jar.jedis-2.1.0.jar.t ...

  7. nginx&plus;tomcat&plus;redis完成session共享&lpar;转载&rpar;

    转载:http://blog.csdn.net/grhlove123/article/details/48047735 tomcat7下基于redis的session共享所需jar包: http:// ...

  8. 基于SpringBoot&plus;Redis的Session共享与单点登录

    title: 基于SpringBoot+Redis的Session共享与单点登录 date: 2019-07-23 02:55:52 categories: 架构 author: mrzhou tag ...

  9. 分布式Session共享(一):tomcat&plus;redis实现session共享

    一.前言 本文主要测试redis实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等. 二.环境配置 本测试在Window下进行 name version port Tomcat ...

随机推荐

  1. git&plus;coding&period;net记录篇

    很久没用了,有些配置快忘记了,记录下来,以供以后参考回忆 首先下载好git插件,然后在as上面设置好本地项目地址 设置好git,点击test测试通过 然后把项目添加到git本地库 你会看到你项目里的文 ...

  2. Spring MVC学习笔记——JSR303介绍及最佳实践

    JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案.2009 年 12 月 Java EE 6 发布,Bean Validation 作为一个 ...

  3. 【原创】VNC-view配置

    *.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...

  4. 怎样通过ajax提交数据

    ajax的出现彻底改变了javascript命运,通过ajax可以直接向服务器提交数据,有两种方式: get方式,数据直接拼接在地址中 post方式,数据由data字段携带 post方式,data中是 ...

  5. AndroidStudio中 R文件缺失的办法

    AndroidStudio中 R文件缺失 找不到R文件的原因有如下两类: 1:IDE或代码问题,非个人原因: 2:个人误操作导致IDE不予提示R文件: 下面是解决办法: 第一种 ①首先确保资源文件是否 ...

  6. Hibernate(一)JDBC简介

    在了解Hibernate之前,我们先回顾一下传统JDBC访问数据库的相关内容.重点在于分析JDBC访问存在哪些 缺陷,这些缺陷在Hibernate中是如何思考和解决的? JDBC主要对象 DriveM ...

  7. SQL Server中TempDB管理(版本存储区的一个example)

    原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...

  8. Python爬虫入门:URLError异常处理

    大家好,本节在这里主要说的是URLError还有HTTPError,以及对它们的一些处理. 1.URLError 首先解释下URLError可能产生的原因: 网络无连接,即本机无法上网 连接不到特定的 ...

  9. ZuulFilter 执行顺序

    说明: 创建了两个Filter,分别是 PreFilter public class PreFilter extends ZuulFilter { public PreFilter() { super ...

  10. mac sed 使用踩坑实录

    [转自别处] 比如我sed想做文件原地的替换,但是怎么写都出错,错误提示还莫名其妙,后来多方搜索才知道Mac上的sed如果参数有-i就必须加上备份指令,即-i后添加任意字符,那些字符就作为备份文件的后 ...