@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,请教哈这是什么原因导致的问题?
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);
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。