Java:链接redis报错:NoSuchElementException: Unable to validate object

embedded/2024/12/30 1:18:55/

目录

    • 前言
    • 报错信息
    • 排查
      • 1、确认redis密码设置是否有效
      • 2、确认程序配置文件,是否配置了正确的redis登录密码
      • 3、检测是否是redis持久化的问题
      • 4、确认程序读取到的redis密码没有乱码
    • 原因
    • 解决


前言

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


报错信息

java">redis.clients.jedis.exceptions.JedisException: Could not get a resource from the poolat 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 objectat 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

排查

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

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


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

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


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

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

在这里插入图片描述


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

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

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

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

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

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

在这里插入图片描述


原因

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

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

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


解决

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


http://www.ppmy.cn/embedded/148516.html

相关文章

最适合智能体的身份认证技术:对比OpenID Connect、API keys、did:wba

最适合智能体的身份认证技术:对比OpenID Connect、API keys、did:wba 智能体需要新的身份认证技术 智能体对身份认证技术提出了新的需求,其中最重要的一个就是互联互通,特别是让任意两个智能体都能够互联互通。 其中的原理很简单:…

创建vue2项目或vue3项目超详细!

一、安装Node (去官网下载所需版本即可,或私我发你安装包) 1、检查Node版本 二、创建vue2项目 1、安装vue脚手架 npm install -g vue/cli 或 yarn global add vue/cli 2、查看vue的版本 3、创建一个项目 3.1 进入桌面路径(创…

新闻网站的个性化推荐:机器学习的应用

3.1可行性分析 开发者在进行开发系统之前,都需要进行可行性分析,保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该新闻网站所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识,同时也…

Blazor 直接读取并显示HTML 文件内容

如果你想在 Blazor 中直接读取 并显示HTML 文件,可以使用 .NET 的文件读取方法,比如 File.ReadAllText。Blazor Server(服务端)可以通过服务器的文件系统访问文件。 以下是针对 Blazor Server 的解决方案: 1. 使用 Fi…

docker 安装minio

docker pull minio/minio #启动 mkdir -p /root/minio/config mkdir -p /root/minio/datadocker run -d \--name minio \-p 9002:9000 \-p 9001:9001 \--restartalways \-v /root/minio/data:/data \-v /root/minio/config:/root/.minio \-e "MINIO_ACCESS_KEYminioadmin…

江苏计算机专转本 技能Mysql知识点总结(三)

四、视图与索引 视图是一张虚拟的表,不存在真正的数据,数据全部基于数据表,但是可以正常使用增删改查 创建视图 CREATE VIEW 视图名 AS SELECT column1, column2, ... FROM 表名 WHERE 表达式; 删除视图 DROP VIEW 视图名; 修改视…

40万元,开奖!

12月19日,由开放原子开源基金会牵头、OurBMC社区携手其理事单位飞腾信息技术有限公司、麒麟软件有限公司,以及openKylin社区联合承办的第二届开放原子开源大赛“计算机系统安全可信方案设计与实现”路演决赛在武汉光谷圆满落下帷幕。 大赛自启动以来&…

C++--------内存结构

C内存结构 程序内存分区: 栈区(Stack):由编译器自动分配和释放,用于存放函数的参数值、局部变量等。其操作方式类似于数据结构中的栈,先进后出。例如,在函数调用时,函数内部的局部变…