使用SSH2+TOMCAT6+MYSQL开发,假如超过8小时未访问数据库,将hibernate出现如下异常
org.hibernate.exception.JDBCConnectionException: could not execute query at
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java: 74 )
这是因为Mysql服务器默认的“wait_timeout”是28800秒,而hibernate自带的默认连接池DriverManagerConnectionProvider没有解决这个问题
可通过C3P0、Proxool、DBCP等数据库连接池解决该问题
最后我采用了C3P0,貌似配置比较容易,Spring配置C3P0
<!-- DataSource Definition, using c3p0 connection pool -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="minPoolSize" value="5" /> <!--连接池中保留的最小连接数。-->
<property name="maxPoolSize" value="20" /> <!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxIdleTime" value="60" /> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="acquireIncrement" value="5" /> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="maxStatements" value="0" />
<property name="initialPoolSize" value="10" /> <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="automaticTestTable" value="c3p0Test" /> <!--c3p0自动建立表c3p0Test测试连接的有效性-->
<property name="idleConnectionTestPeriod" value="60" /> <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="acquireRetryAttempts" value="30" /> <!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="testConnectionOnCheckout" value="false" /> <!--因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable等方法来提升连接测试的性能。Default: false-->
</bean>
可参考更多网上资料,例如
补充:
或者可以不改连接池,先试试在hibernate中加上配置自动重连接配置 试试,我没试过。。。。
<property name="connection.autoReconnect">true</property>
<property name="connection.autoReconnectForPools">true</property> <!--可选-->
<property name="connection.is-connection-validation-required">true</property> <!--可选-->
分享到:
相关推荐
could not execute:bad executable format(win32 error 193) 下了一个实现MD5的代码,编译时没有错误,但是执行的时候却提示:could not execute:bad executable format(win32 error 193)
即Tomcat服务器与MySQL数据库之间使用第三方C3PO连接池,项目的应用程序部署好后,每过一段时间(比如一个晚上),应用程序没有被调用,然后一旦程序访问MySQL数据库就会抛出异常:java代码org.hibernation....
2. **获取连接**:从连接池中获取一个连接,如果没有空闲连接,会等待其他线程归还连接。如果达到最大连接数且所有连接都在使用,会抛出`dbutils.exceptions.NoFreeConnection`异常。 ```python def get_conn(self...
3. 初始化连接池:设置最大连接数、最小空闲连接数等参数,创建连接池实例。 4. 获取连接:通过`pool.connection()`获取连接,用完后使用`connection.close()`归还,但不必关闭,连接池会自动管理。 5. 示例代码: `...
2. 请求连接:当应用程序需要访问数据库时,向连接池申请一个连接,连接池会检查当前是否有空闲连接,如果有则直接返回,否则等待或创建新的连接。 3. 使用连接:应用程序获取到连接后,进行数据库操作。 4. 归还...
在C#编程中,连接MySQL数据库是常见的任务,但有时候可能会遇到一些问题,例如“给定关键字不在字典中”的错误。这个问题通常与使用的MySQL数据访问驱动(MySql.Data.dll)有关。以下是对这个错误的详细分析和解决...
文件级别数据库恢复工具软件,本软件适合于操作系统崩溃后将mysql数据目录拷贝出进行恢复,在恢复前需要使用之前备份的数据库结构新建空库,然后将还原文件的数据恢复到新库,目前只能恢复InnoDB引擎、MyISAM引擎 表...
**Python-PySQLPool:构建高效MySQL数据库连接池** 在Python编程中,处理数据库操作时,为了提高性能和效率,通常会使用连接池(Connection Pool)管理数据库连接。PySQLPool是一个专门针对MySQL数据库的Python连接...
2. **配置连接池参数**:包括初始连接数、最大连接数、最小连接数、连接超时时间、空闲连接检查频率等。这些参数需要根据应用程序的并发量和数据库服务器的承载能力来设定。 3. **集成到应用框架**:如果你使用的是...
在这个“VC下运用ADO连接池例子”中,我们将深入探讨如何在Visual C++(VC)下使用ADO连接池技术来提高数据库操作的性能和效率。 首先,我们需要了解什么是ADO连接池。连接池是一种管理资源的技术,它允许应用程序...
HttpClient连接池是网络编程中一个重要的优化手段,它允许我们重用已经建立的HTTP连接,减少每次请求时的建立和关闭连接的开销,从而提高应用程序的性能和效率。Apache HttpClient库提供了这样的功能,让我们能够...
2. **申请连接**:当应用需要访问数据库时,向连接池申请一个连接,连接池会检查是否有空闲连接,如果有则直接返回,否则等待或新建连接。 3. **使用连接**:应用使用获取到的连接执行SQL语句。 4. **释放连接**:...
在Python中,`pymysql`库提供了与MySQL数据库交互的能力,而为了提高性能和资源管理,通常会使用数据库连接池(Connection Pool)。本文将深入探讨Python中的`pymysql`库以及如何使用它来实现数据库连接池。 `...
在Java开发中,数据库连接池是管理数据库连接的重要技术,它可以高效、有效地管理数据库资源,提高应用程序的性能。本教程将深入讲解JDBC数据库连接池的简单实现。 首先,我们需要理解JDBC(Java Database ...
1. 初始化连接池:设定最大连接数、空闲超时时间等参数。 2. 获取连接:从池中取出一个已存在的连接,如果池中无可用连接,则等待或创建新的连接。 3. 归还连接:使用完后,将连接归还到连接池,以便其他请求重用。 ...
Windump和WinPcap是网络数据包捕获和分析的两个关键工具,广泛用于网络监控、故障排查和安全分析。这两个工具在IT行业中扮演着重要角色,尤其对于网络管理员和网络安全专家来说,它们是必不可少的工具箱成员。...
while not SQLQuery.Eof do begin ShowMessage('Field1: ' + SQLQuery.FieldByName('Field1').AsString); // 其他字段处理... SQLQuery.Next; end; // 关闭查询和连接 SQLQuery.Close; SQLConnection1....
### Java动态代理实现数据库连接池 #### 背景与挑战 在开发应用程序时,数据库连接池是一个常用且重要的组成部分。频繁地建立和断开数据库连接不仅效率低下,还可能导致性能瓶颈。为了解决这一问题,引入了数据库...
连接池最小连接数为5,最大连接数为20,空闲连接超过60秒将被回收。 4. **从连接池获取连接**:在应用需要与数据库交互时,可以从连接池中获取一个连接: ```cpp Connection* conn = pool->getConnection(); ```...
// 最大空闲连接数 dataSource.setInitialSize(10); // 初始化连接数 dataSource.setMinIdle(5); // 最小空闲连接数 dataSource.setMaxWait(5000); // 超时时间,单位毫秒 return dataSource; } } ``` 然后,...