Tomcat进行请求的Session解决方式总体来说有三种,

(1)使用Nginx或者Apache反向代理工具进行用户请求的分机器,在Tomcat的Engine中的标签中加入jvmRoute属性,指定对应的负载到这个机器上就可以了,即称为有粘性的Session。

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">

  Nginx对应原理:nginx_upstream_jvm_route(nginx扩展,推荐使用)

  nginx_upstream_jvm_route是一个nginx的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。

  简单来说,它是基于cookie中的JSESSIONID来决定将请求发送给后端的哪个server,nginx_upstream_jvm_route会在用户第一次请求后端server时,将响应的server标识绑定到cookie中的JSESSIONID中,从而当用户发起下一次请求时,nginx会根据JSESSIONID来决定由哪个后端server来处理。

  还可以使用ip_hash的方式来进行,但是,不推荐这样的方式,所以,总体来说,这个方式是可以进行负载的,也是解决Session问题。

  通常,更推荐大家使用第三方的代理进行Session的分机器方式,这样在高可用方面可能稍微欠缺,但是,如果不是很大的项目情况,不会出现太大的问题。

  配置方式:待后面进行实际亲测后贴出来

  别人配置方式地址:http://www.linuxidc.com/Linux/2013-06/86446.htm (后面将验证改配置是否有效)

  这里也讲了一些价值的东西:http://hanqunfeng.iteye.com/blog/1920994

(2)使用Tomcat自带的功能,进行服务间的Session复制,但是,Session复制可以使用两种方式,修改后全量的复制,还是修改后增量复制,对应的Tomcat的类,DeltaSession(增量)、ReplicatedSession(全量,暂时在Tomcat9源码中未找到),这里的配置还有待添加。即称为无粘性的Session。

  配置方式:待后面进行实际亲测后贴出来

  别人配置方式地址:http://www.cnblogs.com/hanxianlong/p/3456780.html (后面将验证改配置是否有效)

(3)将Tomcat的Session管理分离出来,进行统一管理,将Session放入到Redis或其他缓存中去。

  这里需要去使用代码实现,也可以使用第三方插件实现,名称:tomcat-redis-session-manager 地址:https://github.com/jcoleman/tomcat-redis-session-manager

Tomcat中负载的Session解决办法的更多相关文章

  1. Tomcat中Url中文乱码解决办法

    引自:http://thoughtfly.iteye.com/blog/1533481 默认的tomcat容器如果直接使用get方式在url中传中文时,传到后台接收会是乱码. 乱码问题 原因: tom ...

  2. MyEclipse中拷贝J2EE项目,发布到tomcat中名字一样的解决办法

    修改Eclipse工作空间下新拷贝项目下.settings文件夹中org.eclipse.wst.common.component的两个属性值. 为新项目名字: <?xml version=&q ...

  3. vsftp在REDHAT,CENTOS 5中登录慢的解决办法

    vsftp在REDHAT,CENTOS 5中登录慢的解决办法 vsftp在REDHAT,CENTOS 5中不仅登录慢,至少花30秒左右,而且上传文件的速度也受影响, 经过摸索,根本原因在DNS解析上花 ...

  4. ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务解决办法

    ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务解决办法: 1.首先打开cmd命令 查看本地TNSPING配置 是否ok?然后找到 Oracle 安装文件 中 listener. ...

  5. MyEclipse 下'Publishing to Tomcat'has encountered a problem解决办法

    详情查看: MyEclipse 下'Publishing to Tomcat'has encountered a problem解决办法

  6. .net core, docker 在vs2019开发过程中的问题以及解决办法

    .net core, docker 在vs2019开发过程中的问题以及解决办法 记录下来,帮助Ta人~ 1.vs调试,快Build完后提示Docker 端口:xxxx,xxxx,xxxx占用 解决办法 ...

  7. eclipse导入web项目之后项目中出现小红叉解决办法

    项目中有小红叉我遇到的最常见的情况: 1.项目代码本身有问题.(这个就不说了,解决错误就OK) 2.项目中的jar包丢失.(有时候eclipse打开时会出现jar包丢失的情况,关闭eclipse重新打 ...

  8. img中 src 中文路径解决办法

    最近有个项目场景如下:需要后台遍历图片.视频所在的文件夹,获取的到的路径传递到JSP页面,使用<img src="具体的路径">显示图片.遇到的问题:如果图片的路径.图 ...

  9. 启动Tomcat时的常见问题及解决办法

    问题一:环境变量 1.检查jdk 验证jdk的配置,在运行-cmd中输入 java -version 即表示安装成功. 如果jdk没有问题,还需要配置两个环境变量.找到jdk和jre的路径,配置JAV ...

随机推荐

  1. __attribute__特性介绍以及变量和函数特定布局设置

    ARM的MDK编译__attribute__介绍:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348bc/Ciafc ...

  2. [转]无IDE时编译和运行Java

    本文由 ImportNew - Grey 翻译自 dzone.欢迎加入Java小组.转载请参见文章末尾的要求. 最近 Java subreddit 出现了一篇”在没有IDE的情况下编译Java包” 的 ...

  3. HDU 5768 中国剩余定理

    题目链接:Lucky7 题意:求在l和r范围内,满足能被7整除,而且不满足任意一组,x mod p[i] = a[i]的数的个数. 思路:容斥定理+中国剩余定理+快速乘法. (奇+ 偶-) #incl ...

  4. php像新浪微博一样生成短域名

    <?php function shorturl($url='', $prefix='', $suffix='') { $base32 = array ( 'a', 'b', 'c', 'd', ...

  5. EF中的那些批量操作

    在使用EF的过程中,我们经常会遇到需要批量操作数据的场景,批量操作有的时候不仅能提高性能,比如使用SqlBulkCopy进入批量插入的时候,而且比较方便操作,提高效率.那么这篇文章就来总结EF中的那些 ...

  6. [示例]NSDictionary编程题-字典的排序应用(iOS6班)

    代码: #import <Foundation/Foundation.h> static NSString * const kName = @"name"; stati ...

  7. nginx 配置优化的几个参数

    nginx 配置优化的几个参数 2011-04-22 本文地址: http://blog.phpbean.com/a.cn/7/ --水平有限欢迎指正-- -- 最近在服务器上搞了一些nginx 研究 ...

  8. GCJ 2015-Qualification-C Dijkstra 特殊注意,展开 难度:2

    https://code.google.com/codejam/contest/6224486/dashboard#s=p2 题目中的新运算满足传递性不满足自反性,满足传递性则可以先计算后面的部分再计 ...

  9. Quartz之主方法运行

    import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; impo ...

  10. [安卓]我的安卓开发FAQ

    1.什么是ADT: android官方解释是:ADT (Android Developer Tools) is a plugin for Eclipse that provides a suite o ...