SQLException: Connections could not be acquired from the underlying database!
问题描述:测试时数据库连接太久,估计执行不了
果然,提示异常:
SQLException: Connections could not be acquired from the underlying database!
1.这问题应该是数据库信息不正确造成的,检查数据库信息
2.因为问题发生在jdbcTemplate注入时,所以先确定数据库是否有问题。使用上述数据库信息,手动连接数据库确认是否正常。
3.数据库信息验证无误,那么肯定是applicationContext.xml里依赖注入的问题,但是数据库里配置的信息应该没错才对。那么问题就是映射了:applicationContex.xml和db.properties之间通过什么连接?
<context:property-placeholder location="classpath:db.properties"/>
property-placeholeder导入,再通过$替换符替换,那么问题就应该出在这个$的问题上(我给了str1,但你${str1}转换后没有给我str1的字符串)
4.把db.properties里的key值都修改,username改为jdbc.username,果然成功了
5.由此确定了,${username}实际上是打印的系统用户名,用户名不正确自然无法进行连接。
后记:这个bug应该和之前一段时间log4j爆出来的漏洞是一个原理的,通过${}可以获得的不是应出现的字符串从而使服务器实现RMI(远程调用),而远程调用的服务是由黑客控制的,从而使黑客可以远程控制服务器。(大概是这样)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?