首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Redisson Tomcat会话复制唯一的JSESSIONID

Redisson是一个开源的Java分布式对象服务(Java Distributed Objects Service,简称JDOS),是Redis官方推荐的Java Redis客户端之一。Redisson提供了丰富的分布式对象和服务,包括分布式集合、分布式锁、分布式队列、分布式映射等。它能够帮助开发人员在分布式环境下简化应用程序的开发和部署。

Tomcat是一个流行的Java Web服务器和Servlet容器,用于运行Java Web应用程序。Tomcat支持会话复制,即将用户的会话信息复制到多个Tomcat实例中,从而实现负载均衡和高可用性。

JSESSIONID是Tomcat用于标识用户会话的唯一ID,它是通过Cookie发送给客户端的。当用户访问Tomcat服务器时,Tomcat会检查请求中是否包含有效的JSESSIONID,如果没有,则会创建一个新的会话并生成一个唯一的JSESSIONID发送给客户端。客户端在后续的请求中通过Cookie将JSESSIONID发送回Tomcat,以标识用户的会话信息。

使用Redisson配合Tomcat会话复制可以带来以下优势:

  1. 高可靠性:通过将会话信息复制到多个Tomcat实例中,即使某个Tomcat实例发生故障,用户的会话信息仍然可以被其他正常运行的Tomcat实例所使用,提高了系统的可用性和可靠性。
  2. 负载均衡:多个Tomcat实例之间共享用户的会话信息,可以实现负载均衡,将用户请求分散到不同的Tomcat实例上,提高系统的吞吐量和响应速度。
  3. 水平扩展:通过增加Tomcat实例和使用Redisson进行会话复制,可以方便地实现系统的水平扩展,提升系统的处理能力和并发性能。
  4. 弹性伸缩:当系统负载增加时,可以根据需求增加或减少Tomcat实例的数量,以适应不同的流量和请求负载,实现弹性伸缩。

在实际应用场景中,当需要在Tomcat集群中实现会话复制时,可以通过Redisson提供的分布式映射对象(RMap)来存储和同步会话信息。具体步骤如下:

  1. 引入Redisson的依赖:在项目的构建文件中添加Redisson的依赖,例如Maven的pom.xml文件中添加以下内容:
代码语言:txt
复制
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.16.2</version>
</dependency>
  1. 配置Tomcat的context.xml文件:在Tomcat的conf目录下的context.xml文件中添加以下配置:
代码语言:txt
复制
<Valve className="org.apache.catalina.valves.PersistentValve" saveOnRestart="true" />
  1. 配置Tomcat的web.xml文件:在项目的WEB-INF目录下的web.xml文件中添加以下配置:
代码语言:txt
复制
<listener>
    <listener-class>org.redisson.tomcat.RedissonSessionListener</listener-class>
</listener>
<filter>
    <filter-name>redissonSessionFilter</filter-name>
    <filter-class>org.redisson.tomcat.RedissonSessionFilter</filter-class>
    <init-param>
        <param-name>configPath</param-name>
        <param-value>classpath:redisson-config.json</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>redissonSessionFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>
  1. 创建redisson-config.json文件:在项目的classpath下创建redisson-config.json文件,并配置Redisson连接信息,例如:
代码语言:txt
复制
{
  "singleServerConfig": {
    "address": "redis://127.0.0.1:6379"
  }
}

以上步骤完成后,Tomcat会将会话信息存储在Redis中,并通过Redisson实现会话复制。对于具体的腾讯云相关产品和产品介绍链接地址,可以参考腾讯云的文档和官方网站获取更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Tomcat Session管理分析【面试+工作】

来生成会话id,作为session唯一标识; 3.ClusterManager接口类 实现了Manager接口,集群session管理器,Tomcat内置集群服务器之间session复制功能;...继承ManagerBase抽象类,非Tomcat内置管理器,使用redis集中存储session,省去了节点之间session复制,依赖redis可靠性,比起sessin复制扩展性更好; Session...sessionCookieName也是jsessionid,然后遍历cookie,从里面找出name=jsessionid值赋值给requestrequestedSessionId属性; 2.findSession...如果传sessionId为空,tomcat会生成一个唯一sessionId,具体可以参考类StandardSessionIdGeneratorgenerateSessionId方法;这里发现创建完...:sessionId唯一性问题和session保存到redis中; ?

69640
  • 基于redis实现tomcatsession会话保持

    基于redis实现tomcatsession会话保持 在实际生产中,我们经常部署应用服务,在部署过程中,要让用户无感知你应用升级,这种方式可以通过负载均衡方式来实现灰度部署,如前些文章Nginx...tomcatsession复制 5,使用mamcached来存储session 我们这里主讲解redis方式来实现Tomcatsession共享。...我们例子使用了一台Nginx做负载均衡,后端挂接了两台Tomcat,且每台TomcatSession会话都保存到Redis数据库中。...当要上线新代码时,只需简单地取下Tomcat实例,此时所有的访问用户会被路由到活动Tomcat实例中去,而且由于会话数据都是保存在redis数据库中,所以活跃用户并不会受影响。...都是一致,所以我们认为他session会话保持已经完成,你们也可以选择换个客户端IP地址来测试 ?

    1.5K20

    面试总结

    此算法避免了“标记-清除”碎片问题,同时也避免了“复制”算法空间问题。 说有点不够形象,还是用对比表格来展示吧。...Redisson源码。...参考: Redisson 基于Redis实现分布式锁,Redisson使用及源码分析 12. threadlocal有何缺陷 Java中ThreadLocal 变量用于将变量同当前线程绑定,每个线程都有自己独立...简单来说,session存储于服务端,cookie存在于客户端,每次会话时服务器会在内存中开辟一小块内存空间记录会话,session运行依赖于session id(tomcat中叫jsessionid...所以,需要记录点是: 1.session存储在服务端,cookie存储在客户端(浏览器); 2.服务端中记录唯一会话标示用是session id,tomcat中叫做jsessionid,cookie

    45150

    CentOS-6.4-minimal版中Apache-2.2.29与Tomcat-6.0.41实现集群

    "worker"web服务器,由它们实际处理请求 2)会话复制   会话复制(即常说Session共享)是一种机制,将客户端会话整个状态原原本本复制到集群中两个或多个服务器实例,以实现容错和故障切换功能...,它采用是每台服务器运行相同应用策略,由负责均衡服务器进行分流,这可以提高整个系统并发量及吞吐量 2)由于集群服务需要在处理请求之间不断地进行会话复制,复制会话将会慢慢变得庞大,因此它资源占用率是非常高...  如果在并发量大应用中,复制会话大小会变得相当大,而使用总内存更是会迅速升高 3)集群会话复制,增加了系统高可用性,由于在每台服务器都保存有用户Session信息   如果服务器群中某台宕机...实例名称 这里jvmRoute属性值要与workers.properties中设置节点名相同,该值将做为后缀添加在每个由该结点生成jsessionid后面 而mod_jk正是根据jsessionid...TCP连接进行会话复制,即tomcatsession同步功能需要用到组播服务   可以通过[route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0]

    38010

    (七)Redis全体系:Red主从复制VS集群分片,老鸟也可能选错!

    前言之前文章中,我们分享了Redis集群情况:(六)Redis全体系:Redis主从复制和集群分片,老鸟必经之路! 今天,我们来对比下【主从复制】和【集群分片】,看看怎么选!建议大家一定要看!...包含了主从复制能力 那是不是代表Redis Cluster永远是优于主从复制选择呢?...Redis Java客户端选择 RedisJava客户端很多,官方推荐有三种:Jedis、Redisson和lettuce。...Redis Cluster架构下都可以使用 内建Tomcat Session Manager,为Tomcat 6/7/8提供了会话共享功能 可以与Spring Session集成,实现基于Redis会话共享...文档较丰富,有中文文档 对于Jedis和Redisson选择,同样应遵循前述原理,尽管Jedis比起Redisson有各种各样不足,但也应该在需要使用Redisson高级特性时再选用Redisson

    11610

    Tomcat集群session复制与Oracle坑。。

    问题描述 公司某个系统使用了tomcat自带集群session复制功能,然后后报了一个oracle驱动包里面的连接不能被序列化异常。...检查后发现系统并没有用到任何及相关类放在session中。 接下来就运维同学头疼了,换tomcat版本、改各种tomcat相关配置都没有解决。...然后我判断可能是程序或者数据导致问题,果然,在经过逐一排查穷举测试,发现干掉某个对象后功能正常了,不报序列化错误了。...而在干掉那个对象里面发现使用了java.sql.Clob类型,曾几何时在网上有看到过这个异常,在tomcat session复制时使用了这个类型字段是会出问题。...tomcat真是醉了,session复制你不支持Clob字段,你报一个oracle驱动不能序列化错误,有点误导,让人迷失方向,还好问题解决了。。

    89990

    简单聊聊Redis中几种java客户端,以及它们优缺点!

    Jedis Lettuce Redisson 在前几篇文章中,我们详细介绍了 Jedis、Lettuce、Redisson 客户端编程使用技巧,今天我们一起来看看这三个客户端优缺点,以及使用建议...、Redisson Redisson 是一个在 Redis 功能基础上实现 Java 驻内存数据网格客户端。...支持读写分离,支持读负载均衡,在主从复制和 Redis Cluster 架构下都可以使用 内建 Tomcat Session Manager,为 Tomcat 6/7/8 提供了会话共享功能,可以与 Spring...Session 集成,实现基于 Redis 会话共享 相比于 Jedis、Lettuce 等基于 redis 命令封装客户端,Redisson 提供功能更加高端和抽象,Redisson 可以类比...Redisson 优势是提供了很多开箱即用 Redis 高级功能,如果你应用中需要使用到 Redis 高级功能,比如分布式锁,分布式对象,分布式会话共享等等,建议使用 Redisson

    1.3K10

    谈一谈分布式会话

    曾经Servlet时代(jsp)),一旦用户与服务端交互,服务器tomcat就会为用户创建一个session,同时前端会有一个jsessionid,每次交互都会携带。...如此一来,服务器只要在接到用户请求时候,就可以拿到jsessionid,并根据这个ID在内存中找到对应会话session,当拿到session会话后,那么我们就可以操作会话了。...三、有状态会话 Tomcat会话,就是有状态,一旦用户和服务端交互,就有会话会话保存了用户信息,这样用户就"有状态"了,服务端会和每个客户端都保持着这样一层关系,这个由容器来管理(也就是tomcat...五、单Tomcat会话(图) 先来看一下单个tomcat会话,这个就是有状态,用户首次访问服务端,这个时候会话产生,并且会设置jsessionid放入cookie中,后续每次请求都会携带jsessionid...那么分布式会话和单个tomcat会话其实也是一样道理。

    18400

    Session

    在处理过程中会给用户创建一个 session 对象,用来存储用户请求处理相关公共数据,并将此 session 对象 JSESSIONID 以 Cookie 形式存储在浏览器中 (临时存储,浏览器关闭即失效...用户在发起第二次请求及后续请求时,请求信息中会附带 JSESSIONID,服务器在接收到请求后, 调用对应 Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应 session...getId(): 该方法返回一个包含分配给该 session 会话唯一标识符字符串 public long getLastAccessedTime(): 该方法返回客户端最后一次发送与该 session...(int interval) 方法来单独设置 session 会话超时 web.xml 配置 使用Tomcat,除了上述方法,您还可以在 web.xml 文件中配置 session 会话超时,下面实例中超时时间是以分钟为单位...,将覆盖 Tomcat 中默认 30 分钟超时时间。

    1.6K10

    JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域

    会话跟踪技术Session、Cookie、url、隐藏表单域 (一)Session session是保存在服务器端,理论上是没有是没有限制,只要你内存够大。...浏览器第一次访问服务器时会创建一个session对象并返回一个名为JSESSIONID=ID值, 创建一个Cookie对象key为JSSIONID,value为ID值,将这个Cookie写回浏览器。...浏览器在第二次访问服务器时候携带Cookie信息JSESSIONID=ID值,如果该JSESSIONIDsession已经销毁,那么会重新创建一个新session再返回一个新JSESSIONID...举例说明: 你在tomcat上同时部署了两个web项目,分别是web1、web2。当你在一个浏览器上同时访问web1时创建session是A1,访问web2时创建session是A2。...(三)url 使用url实现会话跟踪技术 : 在URL中添加用户会话信息作为请求参数,或者将唯一会话ID添加到URL结尾以标识一个会话。 优点: 在Cookie被禁用时候依然可以使用。

    52810

    02-分布式会话

    为何使用无状态会话有状态会话都是放在服务器, 一旦用户会话多, 那么内存就会出现瓶颈, 而无状态会话可以采用介质, 前端可以使用Cookie(app可以使用缓存)保存用户ID或者Token, 后端比如Redis..., 相应用户会话都会存放入Redis中进行管理, 如此, 对应用部署服务器就不会造成内存压力, 用户在前端发起HTTP请求, 携带用户ID或者Token, 如此服务端能够根据前端提供ID或者Token...来识别用户, 可伸缩性就更强了单Tomcat会话先来看一下单个tomcat会话,这个就是有状态,用户首次访问服务端,这个时候会话产生,并且会设置jsessionid放入cookie中,后续每次请求都会携带...jsessionid以保持用户状态。

    18030

    jsp九大内置对象常用方法及四个作用域

    ("编码格式utf-8") :设置post方式请求编码 (tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8) getRequestDispatcher("B.jsp")...(重定向) void setContetType(String type):设置服务端响应编码(设置服务端contentType类型) session: 会话对象,session存储在服务端 实现机制...:客户端第一次请求服务端时,服务端会产生一个session对象(用于保存该客户信息),并且每个session对象 都会有一个唯一 sessionId( 用于区分其他session),且产生一个cookie...,并且该cookiename=JSESSIONID ,value=服务端sessionId值;然后服务端会在响应客户端同时将该cookie发送给客户端 客户端第二次请求服务端时,服务端会先用客户端...cookie种JSESSIONID 去服务端session中匹配sessionid,如果匹配成功(cookie jsessionid和sesion sessionid),说明此用户 不是第一次访问

    58640

    Session深度解析

    广义session        中文名称会话,Http客户端和Http服务器开始通信,就会产生会话会话过程是可以连续,也可以是时断时续,它会有一个时间范围,表象就是你登录一个网站,如果长时间未登录...,如我们最常用Tomcat、Weblogic、Websphere等,session通常是存储在服务器内存中(也有其它存储方式,但这里只讨论这种情况),也就是说session是服务器创建,而不是浏览器创建...以Tomcat为例,当使用浏览器访问一个jsp时,Tomcat会先根据jsp生成java文件,再编译成class,最后运行,输出内容到浏览器,浏览器解析呈现给用户。...初次访问服务器上一个jsp,服务器在响应头中设置了临时cookie,并加上了一JSESSIONID(毋庸置疑,肯定是服务器给加上Tomcat具体代码我没有去找)。        ...浏览器将存储JSESSIONIDcookie随着请求一起发送到服务器,服务器通过JSESSIONID到内存中找到上次生成session对象,从而实现客户端(浏览器)共享session。

    82100

    理解分布式会话

    早期 Servlet时代(jsp),一旦用户与服务端交互,服务器 tomcat 就会为用户创建一个 session,同时前端会有一个 jsessionid,每次交互都会携带。...如此一来,服务器只要在接到用户请求时候,就可以拿到 jsessionid,并根据这个ID在内存中找到对应会话 session,当拿到 session 会话后,那么我们就可以操作会话了。...有状态会话 Tomcat会话,就是有状态,一旦用户和服务端交互,就有会话会话保存了用户信息,这样用户就"有状态"了,服务端会和每个客户端都保持着这样一层关系,这个由容器来管理(也就是tomcat...注:tomcat会话可以通过手段实现多系统之间状态同步,但是会损耗一定时间,一旦发生同步多个用户请求就会等待,这种做法不可取。...单Tomcat会话 先来看一下单个 tomcat 会话,这个就是有状态,用户首次访问服务端,这个时候会话便产生,并且会设置 jsessionid 放入 cookie 中,后续每次请求都会携带 jsessionid

    70120
    领券