开发者社区> 问答> 正文

conn = DbKit.getConnection();报错?报错

@JFinal 你好,想跟你请教个问题:使用jfinal的时候,在使用定时器的时候会出现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.Db.update(Db.java:287)
 ... 6 more,请教哈这是什么原因导致的问题?

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

    c3p0没有配置好的问题,你的配置是什么,似乎是连接被关闭了,未添加额外的配置,沿用jfinal中的配置privateintmaxPoolSize=100;privateintminPoolSize=10;privateintinitialPoolSize=10;privateintmaxIdleTime=20;privateintacquireIncrement=2;  可能是DbKit.getConnection()获取到的连接在使用时已经在过去被关闭了,也可能是连接超时被回收了

    终于解决了,我这边是Timer设置的时间比数据连接的超时时间长,结果连接被回收了,Timer任务里面还想使用这个连接

    在Jfinal初始化C3P0插件的时候把maxIdleTime设置大一点就行了~

    详情可以去看C3P0PLUGIN.class的源码:

    publicC3p0Plugin(StringjdbcUrl,Stringuser,Stringpassword,StringdriverClass,IntegermaxPoolSize,IntegerminPoolSize,IntegerinitialPoolSize,IntegermaxIdleTime,IntegeracquireIncrement){
    initC3p0Properties(jdbcUrl,user,password,driverClass,maxPoolSize,minPoolSize,initialPoolSize,maxIdleTime,acquireIncrement);
    }

    嗯,这差不多是个治标不治本的方法,因为我的Timer是个定时的循环任务(30秒一次),所以时间是肯定固定的,回头再看看有没有根本的解决方法,thread我也用过貌似还是不行Timer中的时间可能很长,可能无限的长啊,那到底设置maxIdleTime为多少合适了,增加maxIdleTime的时间还是没有从根本上解决问题吧。如果你分析的原因是对的话,为什么DbKit.getConnection()获取到的连接还是以前的那个连接,而不是从连接池中取到一个有用的连接了?

    2020-06-22 21:15:17
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

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