博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Tomcat7基于Redis的Session共享实战一
阅读量:6975 次
发布时间:2019-06-27

本文共 2764 字,大约阅读时间需要 9 分钟。

本文主要介绍如何使用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"%>
获取session id Session Id : <%= request.getSession().getId() %>

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中加入

其中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接口。

转载地址:http://uwrsl.baihongyu.com/

你可能感兴趣的文章
linux下启动oracle
查看>>
【原创】开源Math.NET基础数学类库使用(02)矩阵向量计算
查看>>
SqlHelper
查看>>
前端画面-下拉后滚动
查看>>
golang使用http client发起get和post请求示例
查看>>
remoting生命周期
查看>>
[zz]malloc()和calloc()
查看>>
Sylius – 100% 免费和开源的电子商务解决方案
查看>>
单片机系列学习
查看>>
BZOJ3571 : [Hnoi2014]画框
查看>>
读枯燥的技术书时怎么集中精神?
查看>>
【github】github 使用教程初级版
查看>>
iOS 依据文本内容为TextView动态定义高度
查看>>
信号练习
查看>>
UML类图几种关系的总结
查看>>
JavaScript学习笔记——流程控制
查看>>
CCF系列之ISBN号码(201312-2)
查看>>
JDBC学习笔记(1)——JDBC概述
查看>>
iOS 中实现功能引导页面
查看>>
呼吁身份证号码识别生日的问题
查看>>