tomcat的session共享
转自:https://blog.csdn.net/weixin_33940102/article/details/85973141
可通过下面方法限制一个用户访问一个服务器之后就只在该服务器上操作。
请求负载过程中会话信息不能丢失。那么在多个tomcat中session需要共享。
配置tomcat的session共享可以有三种解决方案:
第一种是以负载均衡服务器本身提供的session共享策略,每种服务器的配置是不一样的,并且nginx本身是没有的。这里不做探究。
第二种是利用web容器本身的session共享策略来配置共享。
针对于weblogic这种方式还是靠谱的。但是针对于tomcat这种方式存在很大的缺陷,主要因为是依靠广播方式来实现的session复制,会浪费很多带宽导致整个网络反应缓慢。官网也建议这种方式最好不要超过4台tomcat,具体的内容可参考/webapps/docs/cluster-howto.html里面有详细的说明。下面是具体的配置过程。
最简单的方法是将server.xml里的该行内容注释取消,如下:
使用这样方法配置的集群会将session同步到所在网段上的所有配置了集群属性的实例上(此处讲所在网段可能不准确,是使用Membership 的address和port来区分的。tomcat集群的实例如果在Membership配置中有相同的address和port值的tomcat被分到同一个集群里边。他们的session是相互共享的,同一个session的集群被称为一个cluster。可以配置多个cluster,但是cluster和cluster之间的session是不共享的)。也就是说如果该广播地址下的所有Tomcat实例都会共享Session,那么假如有几个互不相关的集群,就可能造成Session复制浪费,所以为了避免浪费就需要对节点多做点设置了,如下:
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8"> <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/> <Channel className="org.apache.catalina.tribes.group.GroupChannel"> <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/> <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/> <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> </Sender> <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> </Channel> <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer" tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/" watchDir="/tmp/war-listen/" watchEnabled="false"/> <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> </Cluster>
<Cluster>中加了一个<Channel>,里面包了个<Membership>,要关注的是<Membership>的port属性和address属性,不同的集群设置不同的port值或address值,从而保证session在不同集群之间的隔离。
另外要注意,Make sure your web.xml
has the <distributable/>
element 。项目中的web.xml文件需要在节点中增加<distributable/>节点。
第三种是Tomcat集群+redis的Session共享配置方法。
可参考http://www.cnblogs.com/zhrxidian/p/5491285.html,后期会测试并整理。
tomcat的session共享相关推荐
- nginx集群tomcat,session共享问题
简介 上一篇中,nginx实现了tomcat集群,但是其实集群还有很多问题,比如session共享问题.简单来说就是通过负载均衡之后,用户第一次请求的tomcat和第二次请求的tomcat基本不是同一 ...
- tomcat配置session共享
tomcat官网 打开 tomcat 官网: http://tomcat.apache.org/ , 找到需要配置的tomcat版本的文档,这里以 tomcat7 为例, 找到对应的 Clusteri ...
- nginx+tomcat+php(tomcat的session共享设置)
名称:nginx+tomcat+redis+php mail:maishujie_dj@163.com ------------------------------------------------ ...
- ngnix+tomcat实现session共享
最近访客 kuang.. funge xbzy77 piaop.. lzy82.. eight.. sens_.. 雪见烟寒 apig0120 taojinqu a1450.. jsmxf 最新评论 ...
- Nginx+tomcat集群的session共享问题
请求负载过程中会话信息不能丢失.那么需要在多个tomcat中session需要共享.所以需要进行相关问题的解决 配置Tomcat的session共享可以有三种解决方案: 第一种:是以负载均衡服务器本身 ...
- nginx+tomcat+redis负载均衡及session共享
概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...
- Nginx+Tomcat+Redis负载均衡实现Session共享
Nginx+Tomcat+Redis负载均衡实现Session共享 环境描述 tomcat1:192.168.194.100:18080 tomcat2:192.168.194.100:28080 N ...
- MSM实现tomcat集群的session共享
本文首发于我的个人网站: https://hewanyue.com/ 本文作者: Hechao 本文链接: https://hewanyue.com/blog/6254cc16.html 会话保持起源 ...
- tomcat集群redis配置session共享
针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redis的session共享:下载JDK7.tomcat7以备后续测试: 一.下载tomcat-red ...
最新文章
- EyeQ进展The Evolution of EyeQ
- LOAM 代码部分的公式推导(前端里程计部分)
- python 进阶:修饰器的介绍
- 编程之美2.9 斐波那契数列
- windows 2008 R2下安装Exchange 2010(单域环境下)
- win10进程太多怎么优化_【电脑维护宝典】WIN10系统下的电脑维护(2)
- 图片裁剪和异步上传插件--一步到位(记录)
- NHibernate之旅(4):探索查询之条件查询(Criteria Query)
- python中numpy、matplotlib的引入及测试
- EXCEL 连接符的使用
- 4linux--------操作系统介绍 - 项目前导必备------全栈式开发40
- C#WinForm实现对前一篇文章中的SFTP工具类的使用
- javaEE常用开源框架的认识及概述,带你深入探索Java开发世界
- de4dot脱壳方法
- java-遍历Json
- 猿创征文 |【算法入门必刷】数据结构-栈(三)
- xp设置系统时间同步服务器,xp设置时间同步服务器
- c语言中方阵对角线的和程序,c语言程序 1、方阵求出主对角线上元素之和;2、辅对角线上元素之积;3方阵中最大的元素...
- 请教PCI卡的DMA方式问题
- 跟小老虎博客并驾齐驱的博客虎兄虎弟dbzhang800
热门文章
- python3基础写的水果销售系统
- C++输入输出:iostream还是cstdio?
- 那个16岁便盗了马化腾QQ的少年,如今怎么样了?
- css怎么恢复清背景,如何清除css背景透明?
- leaflet加载多种形式谷歌地图(120)
- ChapterTwo---Java基本语法:变量、运算符与流程控制(上)
- 通过python获取finebi中的仪表板的token
- VBA 时间相关的函数
- vant组件引入报错module “pages/index/initiate/path/to/@vant/weapp/dist/dialog/dialog.js“ is not defined
- 计算机组装要哪些硬件,电脑配件,教您电脑组装需要哪些配件