Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure情况

连接mycat后15分钟不访问数据库就会报这个错

[2019-07-04 11:27:02,347] [COP:550e8400e29b41d4a716446655440008] (BaseJdbcLogger.java:142) DEBUG com.asiainfo.receive.mapper.LogPackageDataconsMapper.insertLogPackageDataconsistency!selectKey - ==>  Preparing: select 'next value for MYCATSEQ_LOG_PACKAGE_DATACONS'; 
org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: java.sql.SQLException: connection holder is null
### The error may exist in com/asiainfo/receive/mapper/LogPackageDataconsMapper.xml
### The error may involve com.asiainfo.receive.mapper.LogPackageDataconsMapper.insertLogPackageDataconsistency!selectKey
### The error occurred while executing a query
### SQL: select 'next value for MYCATSEQ_LOG_PACKAGE_DATACONS';
### Cause: org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: java.sql.SQLException: connection holder is null
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:172)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:157)
        at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:52)
        at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:53)
        at com.sun.proxy.$Proxy13.insertLogPackageDataconsistency(Unknown Source)
        at com.asiainfo.receive.dao.LogPackageDataconsDao.insertLogPackageDataconsistency(LogPackageDataconsDao.java:28)
        at com.asiainfo.receive.service.LogPackageDataconsService.insertLogPackageDataconsistency(LogPackageDataconsService.java:12)
        at com.asiainfo.receive.servlet.RcvRequestServlet.insertLogPkg(RcvRequestServlet.java:453)
        at com.asiainfo.receive.servlet.RcvRequestServlet.doPost(RcvRequestServlet.java:61)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:94)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1152)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1539)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1495)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: java.sql.SQLException: connection holder is null
        at org.apache.ibatis.executor.keygen.SelectKeyGenerator.processGeneratedKeys(SelectKeyGenerator.java:92)
        at org.apache.ibatis.executor.keygen.SelectKeyGenerator.processBefore(SelectKeyGenerator.java:47)
        at org.apache.ibatis.executor.statement.BaseStatementHandler.generateKeys(BaseStatementHandler.java:138)
        at org.apache.ibatis.executor.statement.BaseStatementHandler.<init>(BaseStatementHandler.java:63)
        at org.apache.ibatis.executor.statement.PreparedStatementHandler.<init>(PreparedStatementHandler.java:39)
        at org.apache.ibatis.executor.statement.RoutingStatementHandler.<init>(RoutingStatementHandler.java:45)
        at org.apache.ibatis.session.Configuration.newStatementHandler(Configuration.java:488)
        at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:47)
        at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:115)
        at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:170)
        ... 31 more
Caused by: java.sql.SQLException: connection holder is null
        at com.alibaba.druid.pool.DruidPooledConnection.checkStateInternal(DruidPooledConnection.java:1155)
        at com.alibaba.druid.pool.DruidPooledConnection.checkState(DruidPooledConnection.java:1148)
        at com.alibaba.druid.pool.DruidPooledConnection.prepareStatement(DruidPooledConnection.java:336)
        at sun.reflect.GeneratedMethodAccessor35.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:55)
        at com.sun.proxy.$Proxy9.prepareStatement(Unknown Source)
        at org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:79)
        at org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88)
        at org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:58)
        at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:76)
        at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:61)
        at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:303)
        at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:154)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:102)
        at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:82)
        at org.apache.ibatis.executor.keygen.SelectKeyGenerator.processGeneratedKeys(SelectKeyGenerator.java:68)
        ... 41 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 395,264 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.
        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:408)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1137)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3697)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3586)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4131)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2597)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2758)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2826)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
        at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1302)
        at com.alibaba.druid.pool.DruidPooledPreparedStatement.execute(DruidPooledPreparedStatement.java:498)
        at sun.reflect.GeneratedMethodAccessor36.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
        at com.sun.proxy.$Proxy10.execute(Unknown Source)
        at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:62)
        at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:78)
        at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:62)
        ... 46 more
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3143)
        at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3597)
        ... 62 more
04-Jul-2019 11:30:17.207 INFO [main] org.apache.catalina.core.StandardServer.await A valid shutdown command was received via the shutdown port. Stopping the Server instance.
04-Jul-2019 11:30:17.208 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-1300"]
04-Jul-2019 11:30:17.259 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8109"]
04-Jul-2019 11:30:17.309 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina

修改属性配置:

	 <environments default="development">
		<environment id="development"> 
			<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
			 <transactionManager type="JDBC" />
			<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI
			POOLED 表示支持JDBC数据源连接池
			UNPOOLED 表示不支持数据源连接池
			JNDI 表示支持外部数据源连接池 -->
		    <dataSource type="com.asiainfo.receive.utils.druidUtils.DruidDataSourceFactory">
				<property name="driverClassName" value="${jdbc.driver}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
				<!-- 最大并发连接数 -->
				<property name = "maxActive" value = "${jdbc.maxActive}" />
				<!-- 初始化连接数量 -->
				<property name = "initialSize" value = "${jdbc.initialSize}" />
				<!-- 配置获取连接等待超时的时间 -->
				<property name = "maxWait" value = "${jdbc.maxWait}" />
				<!-- 最小空闲连接数 -->
				<property name = "minIdle" value = "${jdbc.minIdle}" />
				<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> 
				<property name = "timeBetweenEvictionRunsMillis" value ="${jdbc.timeBetweenEvictionRunsMillis}" />
				<!-- 配置一个连接池中最小生存的时间,单位是毫秒 -->
				<property name = "minEvictableIdleTimeMillis" value ="${jdbc.minEvictableIdleTimeMillis}" />
				<property name = "validationQuery" value = "${jdbc.validationQuery}" />
				<property name = "testWhileIdle" value = "${jdbc.testWhileIdle}" />
				<property name = "testOnBorrow" value = "${jdbc.testOnBorrow}" />
				<property name = "testOnReturn" value = "${jdbc.testOnReturn}" />
				<property name = "maxOpenPreparedStatements" value ="${jdbc.maxOpenPreparedStatements}" />
				<!-- /*是否自动回收超时连接*/ -->
				<property name = "removeAbandoned" value = "${jdbc.removeAbandoned}" />
				<!-- 延长这个所谓的超时时间,不写默认300,1个小时 -->
				<property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
				<!-- <property name = "logAbandoned" value = "${jdbc.logAbandoned}" /> -->
				
			</dataSource> 
		</environment>

似乎还是不管用

只能写一个没10分钟访问一次数据的线程了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值