当前位置: 代码网 > it编程>编程语言>Java > Java连接Redis报错:NoSuchElementException: Unable to validate object的解决办法

Java连接Redis报错:NoSuchElementException: Unable to validate object的解决办法

2024年12月25日 Java 我要评论
前言一个已经上线的项目,生产环境的redis居然没有设置密码,后来因为漏洞扫描的时候发现了该问题,需要给redis加上密码,在密码加上之后,原本可以正常运行的程序在连接redis的时候出现报错报错信息

前言

一个已经上线的项目,生产环境的redis居然没有设置密码,后来因为漏洞扫描的时候发现了该问题,需要给redis加上密码,在密码加上之后,原本可以正常运行的程序在连接redis的时候出现报错

报错信息

redis.clients.jedis.exceptions.jedisexception: could not get a resource from the pool
	at redis.clients.util.pool.getresource(pool.java:51)
	at redis.clients.jedis.jedispool.getresource(jedispool.java:226)
	at com.xxx.util.jedisutils.getjedis(jedisutils.java:85)
	at com.xxx.itr.thread.jedisconsumethread.run(jedisconsumethread.java:76)
caused by: java.util.nosuchelementexception: unable to validate object
	at org.apache.commons.pool2.impl.genericobjectpool.borrowobject(genericobjectpool.java:506)
	at org.apache.commons.pool2.impl.genericobjectpool.borrowobject(genericobjectpool.java:363)
	at redis.clients.util.pool.getresource(pool.java:49)
	... 3 more

排查

1、确认redis密码设置是否有效

在服务器连接redis,并使用auth命令输入登录密码,成功登录

2、确认程序配置文件,是否配置了正确的redis登录密码

redis密码与实际设置的密码一致

3、检测是否是redis持久化的问题

在服务器连接redis,执行ping命令,结果为:pong,排查持久化的问题

4、确认程序读取到的redis密码没有乱码

在程序上添加日志打印,将读取到的redis密码打印到日志文件

新加的日志并没有出现在日志文件!!!

再次确认,已将添加过日志打印的class文件更新到了tomcat/webapps目录下所对应的程序上,但日志还是没有成功打印出来!!!

出现以上情况,说明当前tomcat运行的并不是tomcat/webapps下的代码

检查tomcat配置,发现以下配置

原因

因配置原因,导致tomcat实际的运行代码并不在当前tomcat的webapps目录下,而且指向了其他的tomcat

因为redis设置了密码,而在当前tomcat程序的配置文件调整redis的密码实际上是没有成功读取到的

redis连接时需要密码,但程序启动时却没有带上密码,导致报错

解决

调整tomcat的配置文件,指向正确的目录(或者把指向程序代码的那项配置去掉,一般情况是不需要对程序代码的读取目录进行配置的)

以上就是java连接redis报错:nosuchelementexception: unable to validate object的解决办法的详细内容,更多关于java连接redis报错unable to validate object的资料请关注代码网其它相关文章!

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com