Timer _timer = new Timer(); _timer.schedule(new CDialStatusChangeTask(), 3000, 60000);
上面是一个Timer,目前整个项目有两个这杨的Timer调用不同的TimerTask.我是指主配置类里面启动的这个,但是经常启动后find()报空指针异常,或者报c3p0连接关闭,但是过会又能继续访问。
java.lang.NullPointerException at com.jfinal.plugin.activerecord.Model.find(Model.java:457) at com.jfinal.plugin.activerecord.Model.find(Model.java:474) at com.teledial.model.CDialListDetail.getResultCDialListDetail(CDialListDetail.java:45) at com.teledial.dbtask.ResultBackDBTask.run(ResultBackDBTask.java:33) at java.util.TimerThread.mainLoop(Timer.java:555) at java.util.TimerThread.run(Timer.java:505)具体报错语句:
return dao.find(" select * from c_diallistdetail where result='1' and beget=1 and diallistid in (select t1.id from c_diallist t1,c_dialplan t2 where t1.planid=t2.id and t2.status=3 )");
引用来自“JFinal”的评论
检查Timer 启动的是否在 ActiveRecordPlugin start() 之前,贴出一下 time 启动的相关代码是在哪里?引用来自“JFinal”的评论
检查Timer 启动的是否在 ActiveRecordPlugin start() 之前,贴出一下 time 启动的相关代码是在哪里?引用来自“风声没”的评论
引用来自“JFinal”的评论
检查Timer 启动的是否在 ActiveRecordPlugin start() 之前,贴出一下 time 启动的相关代码是在哪里?引用来自“风声没”的评论
引用来自“JFinal”的评论
c3p0 是数据库连接池,肯定是允许多线程同时从 c3p0 获取连接的,可能在 ActiveRecordPlugin start() 之前就调用了 find(), 导致了 NullPointerException,此时 ARP 还未初始化引用来自“JFinal”的评论
检查Timer 启动的是否在 ActiveRecordPlugin start() 之前,贴出一下 time 启动的相关代码是在哪里?引用来自“风声没”的评论
引用来自“JFinal”的评论
c3p0 是数据库连接池,肯定是允许多线程同时从 c3p0 获取连接的,可能在 ActiveRecordPlugin start() 之前就调用了 find(), 导致了 NullPointerException,此时 ARP 还未初始化引用来自“风声没”的评论
在Timer有时候会报c3p0的错,我把Timer启动时间調晚后没有空指针异常了。