quartz定时报错,连接失效出现问题
来源:互联网 发布:flash cs6软件 编辑:程序博客网 时间:2024/06/01 21:16
异常:
[2017-11-23 13:57:11] [WARN ] [com.mchange.v2.c3p0.impl.NewPooledConnection:425] - [c3p0] A PooledConnection that has already signalled a Connection error is still in use!
[2017-11-23 13:57:11] [WARN ] [com.mchange.v2.c3p0.impl.NewPooledConnection:426] - [c3p0] Another error has occurred [ com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed. ] which will not be reported to listeners!com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.Util.getInstance(Util.java:387)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:917)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860)
at com.mysql.jdbc.ConnectionImpl.throwConnectionClosedException(ConnectionImpl.java:1235)
at com.mysql.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:1230)
at com.mysql.jdbc.ConnectionImpl.setAutoCommit(ConnectionImpl.java:4833)
at com.mchange.v2.c3p0.impl.NewProxyConnection.setAutoCommit(NewProxyConnection.java:881)
at org.quartz.impl.jdbcjobstore.AttributeRestoringConnectionInvocationHandler.restoreOriginalAtributes(AttributeRestoringConnectionInvocationHandler.java:141)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.cleanupConnection(JobStoreSupport.java:3600)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.doRecoverMisfires(JobStoreSupport.java:3206)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:3935)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:3956)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。这就是问题的所在,在C3P0 pools中的connections如果空闲超过8小时,Mysql将其断开,而C3P0并不知道该connection已经失效,如果这时有Client请求connection,C3P0将该失效的Connection提供给Client,将会造成上面的异常。
分析过程:
而c3p0属性
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime">60</property>
quartz定时任务使用的是默认是maxIdleTime=0,永不丢弃。
从日志文件打印quartz数据库配置信息来看
characterEncoding = UTF - 8 & useSSL = TRUE,
lastAcquisitionFailureDefaultUser -> NULL,
maxAdministrativeTaskTime -> 0,
maxConnectionAge -> 0,
maxIdleTime -> 0,
maxIdleTimeExcessConnections -> 0,
maxPoolSize -> 100,
maxStatements -> 0,
maxStatementsPerConnection -> 120,
解决办法:1.查看源码看是否加上需要加上最大空闲时间 设置为60s
quartz的属性配置是discardIdleConnectionsSeconds
org.quartz.dataSource.myDS.discardIdleConnectionsSeconds:60
2.validationQuery:每次返回连接时执行数据库sql查询到池中确保它仍然有效。
org.quartz.dataSource.myDS.validationQuery:SELECT 1 FROM DUAL
- quartz定时报错,连接失效出现问题
- ActiveMQ发送消息出现连接失效问题
- 配置spring-scheduling.quartz 定时 报错解决
- 关于shiro session失效报错问题
- 关于shiro session失效报错问题
- Shiro关于JSESSIONID失效报错问题
- 关于shiro session失效报错问题
- Spring+Quartz的版本报错问题
- quartz定时,重复的问题
- MySQL连接失效问题
- spring quartz 项目调用另外项目的定时类,出现未注入问题
- setInterval定时连接后台防止session失效
- spring quartz 报错
- quartz报错
- quartz一些报错
- Quartz报错
- Android AlarmManager 定时会 “失效” 的问题
- Android AlarmManager 定时会 “失效” 的问题
- R语言逐行读取数居
- retrofit网络框架源码解析
- VS2015 个人常用快捷键
- 轮播图和小轮播图
- 设计模式学习笔记(二)- -观察者模式
- quartz定时报错,连接失效出现问题
- mfc最详细入门教程
- 听华如技术总监聊聊仿真那些事儿
- c++代码笔记
- GoogleAnalytics文档
- STM32入门系列-使用C语言封装寄存器
- 获取服务器项目地址代码,结果是带IP的
- C++N大名著
- sql查出各个商家中同样产品售价最贵的