Tomcat7基于redis的session共享「建议收藏」

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回车

Tomcat7基于redis的session共享「建议收藏」

Tomcat7基于redis的session共享「建议收藏」

Tomcat7基于redis的session共享「建议收藏」

获取的SESSIONID是同一个,说明成功了。。。

启动redis自身的客户端:redis-cli   -h 127.0.0.1 -p xxx
执行”keys *”,会看到SESSIONID:
执行”get D5E4019A04709CD68F94378211DA1B60″,得到SESSIONID的值。

 Tomcat7基于redis的session共享「建议收藏」

Tomcat7基于redis的session共享「建议收藏」

经测试,只要redis不重启,用户session就不会丢失。虽然session保存到了redis中,但是如果redis挂掉,session也会丢失。为了解决此问题,可对redis进行集群。

 

友情链接:

https://www.cnblogs.com/linjiqin/p/5761281.html

 

转载于:https://www.cnblogs.com/lixinliang/p/8591185.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107639.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nessus8.15_nessus使用教程

    nessus8.15_nessus使用教程1、 打开浏览器输入IP加端口8834登录Nessus2、 输入账号密码,均为admin3、 登录成功后,进入到首页4、 点击侧边栏policies,显示策略界面5、 点击newpolicy,显示策略模板6、 选择advancedscan,填写策略名称7、 点击permission,选择canuse,设置所有人可用8、 单击Plugins标签,该界面显示了所有插件程…

    2022年10月19日
    0
  • 自动登陆抽屉(1)

    自动登陆抽屉(1)

    2021年6月7日
    103
  • 磁盘显示没有初始化找到数据法子[通俗易懂]

    磁盘显示没有初始化找到数据法子[通俗易懂]没有初始化是因为分区表损坏了,导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子没有初始化是因为分区表损坏了,导致移动硬盘出现没有初始化。磁盘显示没有初始化找到数据法子工具/软件:光明数据恢复软件步骤1:程序打开后,直接双击需要恢复的物理盘,没有初始化需要从磁盘恢复文件。步骤2:坐等软件扫描完成一般需要几分钟到半个小时,稍微耐心等下即可。步骤3:打钩所有需要恢复的文件,然后点右上角的保存,《另存为》按钮,将打钩的文件拷贝出来。步骤4:最后一步只需要等程序将文件复制完成就可以了

    2022年9月21日
    6
  • 神经网络的反向传播算法推导

    神经网络的反向传播算法推导有了上一篇神经网络的反向传播算法推导—前期知识准备做铺垫,下一步来看看反向传播算法具体的推导过程。一、定义机器学习中常说的两个函数:损失函数(lossfunction):是定义在单个样本上的,算的是一个样本的值和预测值的误差,记为C(Θ);代价函数(costfunction):是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均,记为J(Θ);假设函数:二、神经网络结构图以三层神经网络为例:…

    2022年5月27日
    28
  • 卡商卡盟在线批发平台_卡盟总控源码

    卡商卡盟在线批发平台_卡盟总控源码源码介绍:该源码对接宝塔API实现秒搭建主站功能,包括分站开通等都无需人工操作源码价值:****.**¥我也不知道值多少钱,反正修了很久才对接好宝塔接口跟各种问题,搞了好多天,时间长达3个月,不过不是连续修2个月,反正开始搞到现在搞了3个月多吧没有接好支付通道,想要运营的可以找我对接或者找别人对接安装说明服务器系统:Linux+Centos7.x+宝塔亲测环境:Nginx1.1…

    2022年8月12日
    4
  • 黑客[入门]

    黑客[入门]第1章黑客基础知识随着互联网技术的飞速发展,网络世界的安全性不断受到挑战。如果你要上网,就免不了遇到黑客的侵扰。本章就为大家介留一些最基本的黑客入门知识,揭密黑客常用的一些命令,当然这些微不足道的伎俩难以入侵戒备森严的网络,不过至少让初学者对黑客的“工作情形”有初步的认识。本章导读1.1黑客简单介绍最早的计算机于1946年在宾夕法尼亚大学出现,而最早的黑客出现于麻省理工学院(贝尔实验室也有)。最初的黑客一般都是一些高级的技术人员,他们热衷于挑战、崇尚自由并主张信息的共享。1…

    2022年5月8日
    65

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号