开发者社区> 问答> 正文

jfinal中c3p0断开连接?报错

@红薯 你好,想跟你请教个问题:你好,我在jfinal中写了一个定时器,mysql数据库,请教哈为何总报错啊?Exception in thread "Timer-3" com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: com.mchange.v2.c3p0.ComboPooledDataSource [ java.beans.IntrospectionException: java.lang.reflect.InvocationTargetException [numThreadsAwaitingCheckoutDefaultUser] ] has been closed() -- you can no longer use it.
    at com.jfinal.plugin.activerecord.Model.find(Model.java:424)
    at com.jfinal.plugin.activerecord.Model.findFirst(Model.java:462)
    at com.hikvision.sys.config.ParaConfigService.findByKey(ParaConfigService.java:28)
    at com.hikvision.sys.config.ParaConfigService.getValueByKey(ParaConfigService.java:36)
    at com.hikvision.recordTemplate.TimeComputer.getRateFromDb(TimeComputer.java:44)
    at com.hikvision.timer.TaskTimer$1.run(TaskTimer.java:63)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)
Caused by: java.sql.SQLException: com.mchange.v2.c3p0.ComboPooledDataSource [ java.beans.IntrospectionException: java.lang.reflect.InvocationTargetException [numThreadsAwaitingCheckoutDefaultUser] ] has been closed() -- you can no longer use it.
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.assertCpds(AbstractPoolBackedDataSource.java:447)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getPoolManager(AbstractPoolBackedDataSource.java:459)
    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
    at com.jfinal.plugin.activerecord.DbKit.getConnection(DbKit.java:129)
    at com.jfinal.plugin.activerecord.Model.find(Model.java:421)
    ... 7 more

展开
收起
爱吃鱼的程序员 2020-06-22 21:20:28 798 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这个主要是连接池中连接有效时间和数据那边的连接timeout配置之间关系的问题。

    “关系的问题”?太隐晦了!但超过timeout了之后,连接池不会返回一个有效的链接么?还会使用之前的链接?我定时器设置的是30分钟,jfinal中的C3p0Plugin的privateintmaxIdleTime=20;?你是不是在代码里手动close()连接了,c3p0连接池会自动回收不用的闲置链接,此时如果你又手动关闭链接,就容易产生以上问题。我现在也用定时器做业务处理,同样遇到这个问题,兄弟你是咋解决的啊?我放到Thread里面还是有这个问题

    这个问题是在开发前期的时候偶尔会发生,也没找出什么原因,当时考虑的是数据库连接过多导致的,所以修改了业务逻辑,使用Thread,并对任务进行了排队,后来就没再出现这个问题了。

    2020-06-22 21:20:47
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载