Tomcat7基于redis的session共享
一,项目需求
因开发人员在登录后台时需要反复认证,tomcat反复切换,所以给运维组提出需求,解决session共享问题。
二,解决方法
环境:基于Centos6.8
Jdk 版本 java version "1.7.0_99" Tomcat版本号:Server number: 7.0.82.0
Redis版本号:redis-3.2.0
1,安装redis
过于简单,此处略去。
2,安装jdk,安装tomcat,配置两个tomcat
在本机中配置有三个Tomcat,分别为:apache-tomcat-7.0.82-8080 apache-tomcat-7.0.82-8082 apache-tomcat-7.0.82-8083 (不同的Tomcat需要修改端口号,否则会冲突报错)
编制这三个index.jsp页面,分别放入apache-tomcat-7.0.82-8080\webapps\ROOT、apache-tomcat-7.0.82-8082\webapps\ROOT、apache-tomcat-7.0.82-8083\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:8080,浏览显示内容:Session Id : A86BC413D12339380DD7B0079C50D9EB
tomcat7-8082访问地址:http://localhost:8082,浏览显示内容:Session Id : 8982F60C7FF1ED2171A1BBCF8BD528JL
tomcat7-8082访问地址:http://localhost:8083,浏览显示内容:Session Id : 8982F60C7FF1ED2171A1BBCF8BD8HJKM
3,拷贝Toncat需要的jar
将如下几个jar拷贝到${TOMCAT_HOME}/lib下 例如:/root/tomcat/apache-tomcat-7.0.82-8080/lib
需要下载这几个jar包。
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="localhostxxx"
port="6379"
password="xxxxxx"
database="0"
maxInactiveInterval="60" />
其中host和port及password为redis的ip和端口和密码
至此配置完成,tomcat会使用redis来托管session。
5、启动tomcat并且测试
分别启动3个Tomcat,在终端看到了如下信息,表明redis的session manager初始化成功。
信息: Deployment of web application directory /root/tomcat/apache-tomcat-7.0.82-8080/webapps/docs has finished in 108 ms
三月 17, 2018 5:13:03 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deploying web application directory /root/tomcat/apache-tomcat-7.0.82-8080/webapps/ROOT
三月 17, 2018 5:13:03 下午 org.apache.catalina.session.ManagerBase setMaxInactiveInterval
警告: Manager.setMaxInactiveInterval() is deprecated and calls to this method are ignored. Session timeouts should be configured in web.xml or via Context.setSessionTimeout(int timeoutInMinutes)
三月 17, 2018 5:13:04 下午 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 complete list of JARs that were scanned but no TLDs werefound in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
三月 17, 2018 5:13:04 下午 com.orangefunction.tomcat.redissessions.RedisSessionManager startInternal
信息: Attached to RedisSessionHandlerValve
三月 17, 2018 5:13:04 下午 com.orangefunction.tomcat.redissessions.RedisSessionManager initializeSerializer
信息: Attempting to use serializer :com.orangefunction.tomcat.redissessions.JavaSerializer
三月 17, 2018 5:13:04 下午 com.orangefunction.tomcat.redissessions.RedisSessionManager startInternal
信息: Will expire sessions after 1800 seconds
三月 17, 2018 5:13:04 下午 org.apache.catalina.startup.HostConfig deployDirectory
信息: Deployment of web application directory /root/tomcat/apache-tomcat-7.0.82-8080/webapps/ROOT has finished in 225 ms
三月 17, 2018 5:13:04 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8080"]
三月 17, 2018 5:13:04 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-bio-8009"]
三月 17, 2018 5:13:04 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 2228 m
打开浏览器,输入http://localhost:8080回车,
打开浏览器,输入http://localhost:8082回车,
打开浏览器,输入http://localhost:8083回车



获取的SESSIONID是同一个,说明成功了。。。
启动redis自身的客户端:redis-cli -h 127.0.0.1 -p xxx
执行"keys *",会看到SESSIONID:
执行"get D5E4019A04709CD68F94378211DA1B60",得到SESSIONID的值。


经测试,只要redis不重启,用户session就不会丢失。虽然session保存到了redis中,但是如果redis挂掉,session也会丢失。为了解决此问题,可对redis进行集群。
友情链接:
https://www.cnblogs.com/linjiqin/p/5761281.html
Tomcat7基于redis的session共享的更多相关文章
- Tomcat7基于Redis的Session共享实战二
目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无 ...
- [转]Tomcat7基于Redis的Session共享
转自:http://blog.csdn.net/catoop/article/details/48603891 目前,为了使web能适应大规模的访问,需要实现应用的集群部署.集群最有效的方案就是负载均 ...
- Tomcat7基于Redis的Session共享实战一
本文主要介绍如何使用redis对tomcat7的session进行托管. 1.安装Redisredis安装比较简单,此处略过. 2.配置两个Tomcat在本机上配置两个Tomcat,分别为tomcat ...
- 项目分布式部署那些事(1):ONS消息队列、基于Redis的Session共享,开源共享
因业务发展需要现在的系统不足以支撑现在的用户量,于是我们在一周之前着手项目的性能优化与分布式部署的相关动作. 概况 现在的系统是基于RabbitHub(一套开源的开发时框架)和Rabbit.WeiXi ...
- .Net分布式架构(二):基于Redis的Session共享
一:Session简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台web服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台web服务器建立连 ...
- Tomcat 7集群基于redis的session共享设置
经过测试之后,发现是tomcat中redis相关jar包问题,替换jar包后A产品运行正常. tomcat/lib目录下将commons-pool2-2.1.jar.jedis-2.1.0.jar.t ...
- nginx+tomcat+redis完成session共享(转载)
转载:http://blog.csdn.net/grhlove123/article/details/48047735 tomcat7下基于redis的session共享所需jar包: http:// ...
- 基于SpringBoot+Redis的Session共享与单点登录
title: 基于SpringBoot+Redis的Session共享与单点登录 date: 2019-07-23 02:55:52 categories: 架构 author: mrzhou tag ...
- 分布式Session共享(一):tomcat+redis实现session共享
一.前言 本文主要测试redis实现session共享的实现方式,不讨论如何让nginx参与实现负载均衡等. 二.环境配置 本测试在Window下进行 name version port Tomcat ...
随机推荐
- bzoj1398 Necklace
关于最小表示法的模板题. 最小表示法:把一个字符串表示为它的的所有循环同构字符串中的字典序最小者. 直接参见代码中的函数getmin()获取精髓 #include <cstdio> #in ...
- 第二十二篇-Guideline基准线
效果图: 前5个是button填充的,最后一个是线性布局下放置一个button在填充. layout.xml <?xml version="1.0" encoding=&qu ...
- django基于存储在前端的token用户认证
一.前提 首先是这个代码基于前后端分离的API,我们用了django的framework模块,帮助我们快速的编写restful规则的接口 前端token原理: 把(token=加密后的字符串,key= ...
- error2019-01-17 宏STDOUT_FILENO
STDOUT_FILENO定义在<unistd.h> EXIT_SUCCESS <stdlib.h> 1.fatal error: sys/capability.h: No s ...
- mybatis 插入一条记录 参数为map的写法
xml: <insert id="insertUser" parameterType="java.util.Map"> insert into us ...
- mybatis的一些小知识
<update id="setReaded"> update wa_ent_job_app set IS_READ= 1, READ_TIME=now() where ...
- HDU 1003 Max Sum 求区间最大值 (尺取法)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- jenkins发版svn
1.在mac上直接安装Jenkins,下载地址 : 2.安装插件:系统管理-->插件管理 publish over ssh Exec command: cd /usr/local/apache- ...
- (string stoi 栈)leetcode682. Baseball Game
You're now a baseball game point recorder. Given a list of strings, each string can be one of the 4 ...
- Dubbo优雅关机原理
Dubbo是通过JDK的ShutdownHook来完成优雅停机的 所以如果用户使用 kill -9 PID 等强制关闭命令,是不会执行优雅停机的 只有通过 kill PID时,才会执行 原理: · 服 ...