应用程序用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报错解决方案" 在Eclipse中部署Tomcat服务器时,可能会遇到各种问题。本文将讨论在Eclipse中部署Tomcat服务器时出现的问题和解决方案。 问题描述 在Eclipse中部署Tomcat服务器时,可能会出现...
linux 版本的 tomcat 9.0.22和 tomcat 8.5.58 有的程序部署上去用9.0的会报错 比如调用钉钉 的发送接口 base64加密的 但是放到tomcat9.0会报错 8.5.58没问题linux 版本的 tomcat 9.0.22和 tomcat 8.5.58 有的程序...
如果配置正确,应用程序将成功部署到Tomcat服务器上,并可以通过浏览器访问。 五、常见问题和解决方法 在配置Tomcat服务器和部署Web应用程序时,可能会遇到一些问题,例如Tomcat服务器无法启动、应用程序无法部署等...
在部署和运行基于Java的应用程序时,Apache Tomcat作为一款广泛使用的轻量级Web服务器,有时会出现各种错误提示。本次讨论的是一个较为常见的问题:“tomcat报错,原因在于JDK没有安装好”。这个问题涉及到Tomcat的...
在IT行业中,部署Web应用程序到Apache Tomcat服务器是常见的任务,但这个过程有时会遇到问题。"部署到Tomcat报错"这个问题可能是由于多种原因引起的,包括但不限于配置错误、环境问题、版本不兼容等。以下将针对这个...
Linux 下 Tomcat 应用程序的部署和基本优化原则 Tomcat 是一个基于 Java 的开源 Web 应用服务器,广泛应用于企业级 Web 应用程序中。部署 Tomcat 应用程序需要了解 Linux 环境和 Tomcat 的配置文件。下面将详细介绍...
标题中的“tomcat部署java项目jar”指的是在Apache Tomcat服务器上部署Java Web应用程序,通常以JAR(Java Archive)格式打包。Tomcat是一个开源的轻量级应用服务器,主要用于运行Servlet和JSP(JavaServer Pages)...
如果没有提供Context描述器,Tomcat会使用默认配置来处理Web应用。 **Tomcat启动时的部署**,如果设置`deployOnStartup`为true,Tomcat会在启动时部署appBase目录下的所有应用。如果存在.WAR文件且比解压的目录新,...
使用Tomcat部署War文件可以快速地部署和管理Java Web应用程序。通过配置Tomcat服务器和部署War文件,可以快速地部署和管理Java Web应用程序。 知识点: * Tomcat安装和配置 * Tomcat服务器配置 * Tomcat用户管理 *...
Tomcat 报错 Service Temporarily Unavailable 解决方式 Service Temporarily Unavailableerror 是 Tomcat 中常见的一种错误,通常是服务器维护或容量问题引起的。解决这个错误的方法通常是重启服务器,但是有时候...
在IT行业中,JavaWeb开发是企业级应用的常见选择,结合Tomcat服务器和MySQL数据库,可以构建出稳定、高效的应用系统。本知识点将详细介绍如何进行JavaWeb+Tomcat+MySQL的一键部署安装。 首先,"JavaWeb+Tomcat+...
Linux系统中部署XWiki协同工作平台,通常需要搭配JDK、Tomcat服务器以及MySQL数据库。以下详细介绍了这些软件的版本信息、下载地址以及在Linux环境下部署的步骤和配置方法。 **软件版本信息** 1. Linux操作系统...
IIS+Tomcat项目部署是将Web应用程序部署到IIS(Internet Information Services)服务器上,并使用Tomcat服务器作为应用程序容器的方式。这种部署方式可以充分发挥IIS的高性能和Tomcat的灵活性,满足复杂的Web应用...
利用yum(黄狗)安装nginx,mysql,通过下载tomcat,jdk并安装。此处用mysql数据库(修改明文密码为复杂密码,不区分大小写设置)。设置tomcat,nginx相应的端口,路径等等。有需要即下载吧!
在 Java Web 开发中,Tomcat 服务器作为应用服务器被广泛使用,而 MySQL 数据库则是许多项目中首选的关系型数据库管理系统。为了实现 Tomcat 应用与 MySQL 数据库的有效交互,本文将详细介绍五种在 Tomcat 中连接 ...
本文主要讲解了如何使用 Tomcat 和 Eclipse 开发 Web 应用程序,包括如何创建一个新的 Web 项目、如何配置 Tomcat 服务器、如何将项目部署到 Tomcat 服务器上。 创建新的 Web 项目 首先,在 Eclipse 中创建一个新...
使用MySQL,开发者可以通过SQL语句进行数据的增删改查操作。 3. **Apache Tomcat**:Tomcat是Apache软件基金会的一个项目,是一个开源的Java Servlet容器,主要用于运行Java的Web应用程序。它支持Servlet和JSP标准...
这个过程需要我们对 Tomcat 服务器进行配置,以便能够正确地部署并运行我们的应用程序。 Spring Boot 项目和 Vue 的结合 在 moderne web 开发中,前端和后端的分离变得越来越普遍。Spring Boot 项目是一个基于 ...
下面我们将总结 Tomcat 中部署 Java Web 应用程序的两种方式:静态部署和动态部署。 静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的 Web 应用程序才能访问。这种方式...