使用zinin的RedisSession共享时报java.lang.ClassCastException转换错误的最终解决方案

Redis存Long取出时报类型转换错误java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 在SpringBoot中,最近使用RedisTemplate来对redis进行操作,但是我们会发现,当我们修改了RedisTemplate的序列化方式之后,在存取Long类型数据时,会发生一些问题。存入对象,在代码中使用Long类型接收,结果报类型转换错误。 阅读详情

最近打算给项目做一下Session共享,使用Redis来实现Session的共享,一种是自己开发代码实现,另外就是利用现成的一些封装好的组件,这种相对比较方便,常见的比如Tomcat-Redis-Session-Manager,还有Tomcat-Redis-Session,我选了后者也就是Tomcat-Redis-Session,GitHub中的地址是  https://github.com/zinin/tomcat-redis-session。在Maven仓库中它被称作, Redis HttpSession For Tomcat,地址是这个http://mvnrepository.com/artifact/ru.zinin/tomcat-redis-session,

只要通过几部就可以搞定,第一步就是将tomcat-redis-session-0.8.jar、commons-pool2-2.4.2.jar ,jedis-2.8.1.jar分别放到Tomcat的Lib中,第二步就是修改tomcat的conf目录中的context.xml 里面增加一条 <Manager className="ru.zinin.redis.session.RedisManager" redisHostname="192.168.14.04" redisPassword="password" redisPort="6379" redisTimeout="30000" /> 这样就连接到Redis服务了

但是在使用过程中程序只要有写入Session的时候就汇报ru.zinin.redis.session.event.RedisSessionAddAttributeEvent cannot be cast to ru.zinin.redis.session.event.RedisSessionEvent

Oct 17, 2016 4:10:12 PM ru.zinin.redis.session.RedisEventListenerThread run

SEVERE: ru.zinin.redis.session.event.RedisSessionCreatedEvent cannot be cast to ru.zinin.redis.session.event.RedisSessionEvent
java.lang.ClassCastException: ru.zinin.redis.session.event.RedisSessionCreatedEvent cannot be cast to ru.zinin.redis.session.event.RedisSessionEvent
at ru.zinin.redis.session.RedisEventListenerThread$1.onMessage(RedisEventListenerThread.java:57)
at redis.clients.jedis.JedisPubSub.process(JedisPubSub.java:129)
at redis.clients.jedis.JedisPubSub.proceed(JedisPubSub.java:102)
at redis.clients.jedis.Jedis.subscribe(Jedis.java:2628)
at ru.zinin.redis.session.RedisEventListenerThread.run(RedisEventListenerThread.java:111)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

这样的错误,开始是怀疑Redis的版本的问题,升级了redis的版本,无效,然后又想是包的引用版本的问题,下载了tomcat-redis-session源码重新调整了 Commons-pool和jedis的版本Build后也不行,  后来冷静下来想想,应该是包的冲突,果断将项目中的lib包中的tomcat-redis-session-0.8.jar删除,这样就和tomcat的lib包中的jar不冲突了,问题彻底解决。


java.lang.ClassCastException格式转换错误的解决方法 原来的代码 其实就是个从redis中取出值的操作,然后报错了 换成下面这样就解决了 应该就是Object对象不能直接强换成LoginUser对象,需要根据情况来进行转换 阅读详情

相关推荐

Openwork 入门指南:开源 AI 桌面助手快速上手

Openwork是一款开源的AI桌面代理工具,提供类似Claude Cowork的免费替代方案。它支持本地运行,确保隐私安全,并能高效处理文件整理、文档读写等任务。支持多种AI模型,通过MIT许可完全免费。安装简单,仅需运行命令行或下载桌面版,需配置API Key后即可使用。操作直观,支持多步骤规划和权限控制,适合自动化重复工作。目前主要支持macOS,未来将扩展至Windows/Linux。建议从简单任务入手,逐步掌握这一高效的数字助手工具。

3802

Spring-Data-Redis--解决java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx

说明 本文介绍解决Spring-Data-Redis的“java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx”报错的方法。 出现的场景 SpringBoot项目中使用Redis来进行缓存。把数据放到缓存中时没有问题,但从缓存中取出来反序列化为对象时报错:“java.lang.ClassCastException: java.util.LinkedHashMap cannot

IT利刃出鞘的博客 1万+

Window系统下搭建GIT本地服务器

这是一篇在window下搭建git本地服务器的教程,带你一步步搭建出本地的git服务器。

qwer971211的博客 2万+

Redis获取缓存异常:java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to XXX

项目运行报错如下: 经过debug查看,从redis获取的值为LinkedHashMap,而是不是我们的实体类testinfo 经过查找代码中Jackson2JsonRedisSerializer使用的事object对象,然后反序列化就会默认为java.util.LinkedHashMap类型 因此对以上代码进行修改: package com.sinosoft.util; import com.fasterxml.jackson.annotation.JsonAutoDete..

心寒的博客 5608

window下移动设备/硬盘报错位置不可用

移动硬盘指示灯亮,但电脑上不显示 报错信息 : 无法访问E:\。参数错误。 报错原因: 移动硬盘打不开提示参数错误,是因为这个H盘的文件系统内部结构损坏导致的。要怎么恢复里面的数据呢? https://jingyan.baidu.com/article/cb5d6105a80242005c2fe0c3.html 解决办法 : 不用格式化修复方法 方法一: 1、单击–开始–运行–输入cmd; 2、...

qq_40907977的博客 4928

当知识图谱遇见多模态:突破文本界限的智能认知革命

本文探讨了知识图谱与多模态技术的融合,揭示了其在医疗诊断、文化保护等领域的革命性应用。通过图神经网络、对比学习框架和跨模态注意力机制等技术,实现了文本、图像和音频数据的智能关联与认知。文章还分享了在Neo4j等图数据库中的实践案例和优化策略,为构建下一代智能认知系统提供了技术参考。

weixin_29197835的博客 462

Redis设置序列化器出现java.lang.ClassCastException

java.lang.ClassCastException: com.example.demo.entity.User cannot be cast to java.lang.String 报错详情如下: java.lang.ClassCastException: com.example.demo.entity.User cannot be cast to java.lang.String at ...

Aflowerseed的博客 3169

基于YOLOv8的表面裂痕等缺陷检测:深度学习与UI界面的实践

本文详细介绍了如何使用YOLOv8进行表面裂痕等缺陷检测,并结合图形用户界面展示检测结果。通过YOLOv8的强大能力,我们可以实现高效、准确的表面缺陷检测,提升工业产品的质量控制水平。未来,随着深度学习技术和数据集的不断发展,表面缺陷检测的精度和速度将不断提升,应用领域也将进一步拓展。希望本文的实践能够为深度学习在工业检测领域的应用提供一些启示。

YOLO 549

使用Redis报错类型错误 java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

使用Redis报错类型错误 java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

qq_53004789的博客 1378

【IxNetwork】史上最全IxNetwork测试仪使用精讲(一),图文教程超赞超详细!!!

IXIA使用的是Server-client模式,Server端在测试仪表的主机上,在开机后会随着主机内的操作系统的启动而自动启动,一般情况下不需要人为的手工启动。因此在通常不需要为主机配置专用的显示器和键盘。client端包括两个测试软件: Ixia Explorer和ScriptMate。这两个软件一般安装在测试用计算机上,在仪表自带的主机中也有这两个软件。根据测试项目的不同来选择使用不同的软件。Ixia Explorer主要提供数据流的测试,针对设备的功能进行测试;

风云说通信 2053

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Redis 服务器没有启动导致的错误:java.lang.ClassCastException: [B cannot be cast to java.lang.Long

java.lang.ClassCastException: [B cannot be cast to java.lang.Long at redis.clients.jedis.Connection.getIntegerReply(Connection.java:265) ~[jedis-2.9.0.jar:na] at redis.clients.jedis.BinaryJedis.expi...

不要总是等明天再开始 5901

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

彻底解决SpringBoot2配置Redis报错java.lang.ClassCastException

使用SpringBoot2 +spring-data-redis做缓存,GenericFastJsonRedisSerializer做序列化和反序列化的情况下,devtools开启本地热部署后,导致异常出现: java.lang.ClassCastException: DTOObject cannot be cast to DTOObject 某个类不能强制转换成某个类,但是者两个类确实是一模一样的,错误主要出现在类加载器上 首先,出现这个问题,因为类的全名和路径都一样,那么根...

maizi_yiyang的专栏 3527

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

原子验令牌时,使用redisTemplate执行lua脚本出现 java.lang.ClassCastException: java.lang.Long cannot be cast to [B

1、问题 redisTemplate.execute 执行 lua脚本:if redis.call(“get”,KEYS[1]) == ARGV[1] then return redis.call(“del”,KEYS[1]) else return 0 end java.lang.ClassCastException: java.lang.Long cannot be cast to [B 2、原因 原因是上面执行了脚本会有一个返回值,我们在下RedisScript指定一下返回值就好了,我这里指定为Lon

qq_41544627的博客 1158

从Redis中取数据时(包含日期):java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to xxx.entity

报错原因是Jackson库默认没有支持Java 8中的LocalDateTime类型。可以按照报错提示所示,添加jackson-datatype-jsr310模块来支持。发生这样的错误应该是你在将数据加入Redis的时候进行了序列化,再从Redis中取出来的时候直接以对象的形式来取数据就不对了。去掉之前的配置文件,在加入redis的时候不进行序列化。

weixin_45460791的博客 821

springboot读取redis发生java.lang.ClassCastException异常

3 java.lang.ClassCastException: com.winds.admin.core.model.system.User cannot be cast to com.winds.admin.core.model.system.User 4 at com.winds.admin.utils.web.WebValidateUtil.isLo...

人生最遗憾的莫过于:轻易地放弃了不该放弃的,固执地坚持了不该坚持的 1654

关于Redis使用Hash数据结构报错:java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

T_karine的博客 4460

关于在redis中查找键值对报java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to...的问题

返回linkedHashMap类型。它的设计使得我们可以更容易地按照插入顺序迭代元素的键值对。这样可以确保转换是安全的,并且不会导致任何意外的行为或错误。强制转换为其他对象类型时,你应该非常小心。有相同的语义和功能,并且不会破坏任何内部状态或依赖关系。转换为其他类型,最好的做法是创建一个新的对象,并手动复制。

sync_with_U 713

redis 使用序列化问题解决

这几天搭建一个项目,使用redis,在使用的时候出现一个序列化的错误项目中使用的redis框架是redisson。

weixin_42850510的博客 1251

java.lang.ClassNotFoundException: redis.clients.jedis.JedisPoolConfig报错解决

1.Projected Structure——Artifacts 2.看一下WEB-INF下的lib中的Library Files是否完全导入,建议直接重新导入一遍,idea会自动把没有导入的导入,不用担心重复问题。

m0_49340285的博客 4187

springboot 从redis取缓存的时候java.lang.ClassCastException:异常

异常日志:2017-12-29 11:36:43.079 ERROR 7956 --- [http-nio-80-exec-8] c.b.common.exception.BDExceptionHandler : com.bootdo.system.domain.UserDO cannot be cast to com.bootdo.system.domain.UserDOjava.lang.Cl

づ開始懂了的博客 8291

session共享 基于tomcat-redis 记录配置过程中遇到的问题

session共享(tomcat-redis) 准备工作: 安装tomcat linux下下载:wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.47/bin/apache-tomcat-8.5.47.tar.gz 解压:tar -zxvf apache-tomcat-8.5.47.tar.gz 注意:多个t...

weixin_43568232的博客 606

tomcat集群基于redis共享session解决方案

一、使用版本:apache-tomcat-7.0.56+nginx-1.8.0+redis-3.0.6 1、先给出正确的配置和jar包 所需jar包如下 tomcat-redis-session-manager1.2.jar jedis-2.6.2.jar tomcat-juli.jar tomcat-juli-adapters.jar commons-pool-1.5.4.

习惯的力量 2万+
上一篇: faxinxi.la的实现原理分析
下一篇: Spring Session Data Redis 配置中遇到的坑
幕紫
博客等级 码龄16年 56粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值