应用程序用tomcat部署,每过一段时间,比方说有一个晚上应用程序没有被调用,然后一旦程序访问MySQL数据库,就会抛出异常:
java.sql.SQLException: Connection.close() has already been called. Invalid operation in this state
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Connection.close() has already been
网上找了很多解决方案均无效,后来改用c3p0链接池,马上解决问题!
一下是c3p0 在spring中的配置:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>
<property name="jdbcUrl"><value>jdbc:mysql://172.16.3.79:3306/test?useUnicode=true&characterEncoding=UTF-8</value></property>
<property name="user"><value>root</value></property>
<property name="password"><value>root</value></property>
<property name="minPoolSize"><value>100</value></property>
<property name="maxPoolSize"><value>400</value></property>
<property name="maxIdleTime"><value>28000</value></property>
<property name="acquireIncrement"><value>5</value></property>
<property name="maxStatements"><value>0</value></property>
<property name="initialPoolSize"><value>2</value></property>
<property name="idleConnectionTestPeriod"><value>28000</value></property>
<property name="acquireRetryAttempts"><value>30</value></property>
<property name="breakAfterAcquireFailure"><value>true</value></property>
<property name="testConnectionOnCheckout"><value>false</value></property>
</bean>
以下是从关于以上配置的描述:
- <!--连接池中保留的最小连接数。-->
-
<property name="minPoolSize">
-
<value>5</value>
- </property>
-
<!--连接池中保留的最大连接数。Default:15-->
-
<property name="maxPoolSize">
-
<value>30</value>
- </property>
-
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default:3-->
-
<property name="initialPoolSize">
-
<value>10</value>
- </property>
-
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default:0-->
-
<property name="maxIdleTime">
-
<value>60</value>
- </property>
-
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3-->
-
<property name="acquireIncrement">
-
<value>5</value>
- </property>
- <!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
- 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
-
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->
-
<property name="maxStatements">
-
<value>0</value>
- </property>
-
<!--每60秒检查所有连接池中的空闲连接。Default:0-->
-
<property name="idleConnectionTestPeriod">
-
<value>60</value>
- </property>
-
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default:30-->
-
<property name="acquireRetryAttempts">
-
<value>30</value>
- </property>
- <!--获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
-
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
-
获取连接失败后该数据源将申明已断开并永久关闭。Default:false-->
-
<property name="breakAfterAcquireFailure">
-
<value>true</value>
- </property>
-
<!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
- 时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
-
等方法来提升连接测试的性能。Default:false-->
-
<property name="testConnectionOnCheckout">
-
<value>false</value>
- </property>
顺便附上网上的一些此类解决方案地址:
http://zhidao.baidu.com/question/94614937.html
http://i5tt.javaeye.com/blog/380324
http://blog.csdn.net/hyqcano/archive/2006/06/15/799598.aspx
自己解决问题了,感觉还是不错的,还是记下来,以备忘记了……
分享到:
相关推荐
eclipse 部署tomcat 服务时出现问题
使用Tomcat Manager这个Web应用程序或者操纵已经部署的Web应用程序 Tomcat Manager 是一款工具它提供基于以URL为基础的Web应用程序部署特性。也有一种工具被称为Client Deployer, 它是一种基于脚本的“命令shell”...
tomcat报错 原因JDK没有安装好!这里提供了报错信息
JSP中常见的Tomcat报错错误解析JSP中常见的Tomcat报错错误解析JSP中常见的Tomcat报错错误解析JSP中常见的Tomcat报错错误解析
java、tomcat报错解决方案集合,自己总结的
从几个方面讨论tomcat报错Service Temporarily Unavailable tomcat解决方式
利用yum(黄狗)安装nginx,mysql,通过下载tomcat,jdk并安装。此处用mysql数据库(修改明文密码为复杂密码,不区分大小写设置)。设置tomcat,nginx相应的端口,路径等等。有需要即下载吧!
详细地说明在Tomcat中部署JavaWeb应用
用Tomcat 和Eclipse开发Web 应用程序(部署发布)配置.docx
学习时偶尔写的tomcat部署文档笔记,分享出来让大家多一个参考。
详细说明了windows服务器nginx+tomcat+mysql部署及配置(配置阿里云后台安全组,配置域名)很适合新手学习 附件中包含: 1.操作说明文档 2.操作录屏 3.安装所用到的软件安装包 1)Windows Server 2019 数据中心版 ...
tomcat-juli.jar 用于在tomcat启动报错时除错
Tomcat部署很少有人提及,很有用的内容 但是不该不知道的内容
TOMCAT报错总结
Spring Boot项目导出war包放到tomcat运行跳转到页面出现404报错
NULL 博文链接:https://yizhenn.iteye.com/blog/2091020
应用服务器部署项目应用服务器部署项目应用服务器部署项目应用服务器部署项目
cesium在Tomcat部署后,出现了,资源引用提示跨域访问问题,这是解决办法
您在部署的时候是不是遇到过这样的问题,成功安装了mysql却无法使用,本文档将为您提供另外的一种安装方式,希望能帮到
在Tomcat部署和发布Web应用.pps 博文链接:https://frankiehuang.iteye.com/blog/138180