时间:2021-07-01 10:21:17 帮助过:20人阅读
问题出现的背景: APP框架,生产者和消费者模式,数据源配置包括mysql(mysql的分支maria DB)的数据源和oracle。 问题描述: 初始化时注册c3p0没有问题,在第一次使用数据库连接(此时创建c3p0连接池)时也没异常,但获取数据库连接时异常(如下): java.s
问题出现的背景:
APP框架,生产者和消费者模式,数据源配置包括mysql(mysql的分支maria DB)的数据源和oracle。
问题描述:
初始化时注册c3p0没有问题,在第一次使用数据库连接(此时创建c3p0连接池)时也没异常,但获取数据库连接时异常(如下):
java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
......
Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@6bf51e5c -- timeout at awaitAvailable()
......
java.lang.IllegalArgumentException: Connection must not be null
......
问题出现的规律:
无规律可言,时不时的,有时候隔一次出现一次连接超时,有时候可能连续几次都会超时。但只要第一次连接成功,运行就没问题。
造成数据库连接超时问题的原因,网上解释很多,大都是和c3p0配置有关,但都不能解决上述问题。
可能的原因分析:
和数据源有关。
为什么这么说?
1、之前项目(只有oracle数据源)运行一直没问题,本次改动就是新增了mysql(mysql的分支maria DB)数据源。
2、把其中一个数据源配置去掉,运行也没问题。
综上,怀疑:
是不是不能同时引用多个不同数据源?但此理由好像完全站不住脚。
是不是有可能和网络(数据库服务器)有关?
=求解