- 浏览: 504058 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (285)
- 数据库 (49)
- dwr (1)
- js (35)
- security (6)
- freemaker (4)
- 网站建设 (15)
- css (5)
- javaEE (56)
- 生活点滴 (12)
- 安装与配置 (16)
- ssh2 (13)
- 开源软件 (6)
- web 应用服务器 (6)
- 开发模式和设计模式 (2)
- linux (5)
- 项目管理 (7)
- 计算机杂症 (0)
- appScan (1)
- idea (3)
- android (1)
- java @override 报错处理 (1)
- lucene (5)
- java (2)
- groovy (1)
- Extjs (7)
- asp (2)
- php (2)
- Memcached (1)
- 名言 (1)
- 面试 (1)
- Jmeter (0)
- 微信支付 (1)
- app开发 (1)
- branch分支合并到trunk主干 (1)
- 自动化测试 (1)
- springClond (1)
- ELK (2)
最新评论
-
skykufo:
坑爹啊,我也因为写多了一个div,在ie8浪费了一天
jQuery加载(load、get、post)页面显示空白原因 -
yeyinzhu3211:
帅哥,我想问下,是怎么去除呀?能详细说明下吗?
IntelliJ IDEA 10.5.1 无法断点或停止不动 -
sshitaime:
怎么下载不了啊,能给我一个安装包吗
oracle 10g透明网关组件下载地址(新) -
fuanyu:
xiaohuafyle 写道被你的头像吓尿了 哥们有这么可怕呀 ...
netstat -aon -
wanlt_software:
谢谢。。。。。
oracle 10g透明网关组件下载地址(新)
MySQL对所有连接的有效时间默认为28800秒,正好8小时,也就是说,如果一个连接8小时没有请求和操作,就会自动断开;但是对于 Hibernate来说,它的连接池并不知道它所管理的连接中是否有被MySQL断开的。如果一个程序要使用数据库连接,而Hibernte的连接池分配 一个已经被MySQL断开了的给程序使用,那么便会出现错误.以下是proxool连接池的解决方案
数据库连接池proxool(0.91),它有两个属性:一个是test-before-use
,还有一个是test-after-use,这两个属性就是在使用前和使用后都要进行对连接的检查,如果连接无效就扔掉再创建一个新的连接,它们的解释如下:
test-before-use
:
If
you set this to true then each connection is tested (with whatever is
defined in house-keeping-test-sql) before being served. If a connection
fails then it is discarded and another one is picked. If all connections
fail a new one is built. If that one fails then you get an SQLException
saying so.
test-after-use:
If you set this to true then each
connection is tested (with whatever is defined in
house-keeping-test-sql) after it is closed (that is, returned to the
connection pool). If a connection fails then it is discarded.
由于项目是spring+ibatis+struts
有关proxool的配置片段如下
web.xml
<servlet-name>ServletConfigurator</servlet-name>
<servlet-class>
org.logicalcobwebs.proxool.configuration.ServletConfigurator
</servlet-class>
<init-param>
<param-name>xmlFile</param-name>
<param-value>WEB-INF/proxool.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
proxool.xml放在WEB-INF下
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
<proxool>
<alias>dbname
</alias>
<driver-url></driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value=""/>
<property name="password" value=""/>
</driver-properties>
<maximum-connection-count>100</maximum-connection-count>
<minimum-connection-count>10</minimum-connection-count>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-new-connections>10</maximum-new-connections>
<prototype-count>5</prototype-count>
<test-before-use>true</test-before-use>
关键代码
<test-after-use>true</test-after-use>
关键代码
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
关键代码
</proxool>
</something-else-entirely>
spring的applicationContext.xml
<bean id="datasource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="org.logicalcobwebs.proxool.ProxoolDriver" />
<property name="url" value="proxool.dbname
" /> 和proxool.xml中的alias相同
</bean>
测试OK
同理其他连接池的解决方案
DBCP增加以下配置信息:
//set to 'select 1'
validationQuery = "select 1"
//set to 'true'
testWhileIdle = "true"
//some positive integer
timeBetweenEvictionRunsMillis = 3600000 //失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程
//set to something smaller than 'wait_timeout'
minEvictableIdleTimeMillis = 18000000 //大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证
//if you don't mind a hit for every getConnection(), set to "true"
testOnBorrow = "true"
C3P0增加以下配置信息:
//获取connnection时测试是否有效
testConnectionOnCheckin = true
//自动测试的table名称
automaticTestTable=C3P0TestTable
//set to something much less than wait_timeout, prevents connections from going stale
idleConnectionTestPeriod = 18000 //置一段时间后连接池自动测试执行,保持连接开放,
//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out
maxIdleTime = 25000
//if you can take the performance 'hit', set to "true"
testConnectionOnCheckout = true
发表评论
-
linux下Mongodb的安装与启动
2018-05-18 15:32 706Linux下Mongodb的安装与启动 1、根据lin ... -
Mysql 远程登录及常用命令
2017-01-16 15:25 685来自:http://www.cnblogs.com/good ... -
win7下mysql 不是内部或外部命令解决办法
2017-01-16 15:14 872来自:http://blog.csdn.net/homedj ... -
left join的第二表中符合条件的第一条记录
2015-10-20 16:59 6611表1 parking的数据 通过left join第二表 ... -
oracle 查询当前节点的所有子节点(或父节点)的语句
2015-05-28 14:02 1442描述tb_doc_catalog表(cat_id,cat_n ... -
MySQL命令行导出数据库
2015-02-02 23:56 762MySQL命令行导出数据库:1,进入MySQL目录下的bin ... -
ORACLE11G设置IP访问限制
2014-12-17 18:26 824出于数据安全考虑,对oracle数据库的IP做一些限制,只有 ... -
oracle定时备份-增量备份
2014-12-10 17:59 878在进行数据库维护的过程中经常会遇到数据库备份的问题。先介绍 ... -
ORA-12519: TNS:no appropriate service handler found 解决
2014-11-17 09:53 824有时候连得上数据库,有时候又连不上. 可能是数据库上当前的 ... -
ORA-28056的解决办法
2014-11-10 10:54 1413客户端一直无法连接,查看alert日志,错误日志如下: ... -
plsql不用配置netManager直接访问oracle
2014-10-14 11:38 1581plsql不用配置netManager直接访问oracle ... -
oracle库中只读用户需要的权限
2013-08-28 23:23 4521业务中要求建立一个只读用户,此用户对其他用户的对象有只读权限 ... -
oracle10 集群 jdbc数据库连接包
2012-12-29 15:46 1198常用JDBC JAR 信息 序号 常用JDBC驱动包 ... -
oracle集群url配置
2012-12-29 15:37 1292oracle集群中plsql和java程序连接方式非集群中pl ... -
oracle常用的bug问题解决
2012-10-17 18:11 1039oracle常用的bug问题解决:测试中所用到的都是win20 ... -
sql 过滤重复数据
2012-06-15 15:57 0sql 过滤重复数据 distinct或group by ... -
Oracle定时任务(转)
2012-04-09 17:16 1031创建表 Sql代码 create tab ... -
(原)mssql数据迁移到oracle
2012-02-10 17:36 1364迁移过程中遇到两种Microsoft OLE DB Prov ... -
JDBC Driver For MSSQL2000/2005/2008(downmoon)
2012-02-08 10:48 2200机器上配置的JDK为1.6,S ... -
oracle 10g透明网关组件下载地址(新)
2012-01-13 15:56 3632oracle 10g透明网关组件下载地址,需要oracle注册 ...
相关推荐
MySQL连接池在Java应用开发中扮演着至关重要的角色,它是一种管理数据库连接的机制,能够有效地提高数据库操作的性能和效率。在这个项目中,我们看到的是一个纯手工编写的Java源码实现,不依赖任何外部数据库驱动,...
MySQL 数据连接池是一种数据库管理技术,它在应用服务器和数据库之间起到了中介的作用,优化了数据库的连接使用,提高了系统的性能和资源利用率。在Java、Python等编程语言中,都有相应的库或框架支持数据连接池的...
这是实现自动重连的关键配置之一,一旦连接断开,连接池会尝试通过执行该查询来重新建立连接。 如果使用其他类型的数据库,只需修改`url`和`driverClassName`即可。 #### 三、配置上下文参数 **2. 在`conf/...
* 数据库连接池特点: * 获取连接时不需要了解连接的名字... * 连接断开了后会自动重连 * 当无可用连接时,获取连接的线程会等待一定时间尝试继续获取,直到取到有效连接或者超时返回一个无效的连接 * 关闭连接很简单
基于C++实现多线程连接池MySQL源码+项目说明+详细代码注释.zip C++ 调用 MYSQL API 连接池 ## environment: * VS2022 * MySQL8.0.27 ## 高并发下频繁处理瓶颈 * 建立通信:`TCP三次握手` * 数据库服务器的`连接认证...
使用 DriverManagerConnectionProvider 连接池机制时,存在一个缺陷,即连接池中的连接在空闲8小时后将自动断开。这是因为 DriverManagerConnectionProvider 使用了 Java 的 DriverManager 来管理数据库连接,而 ...
通过使用Proxool,我们可以设置连接的生命周期,确保即使超过了MySQL的默认超时时间,连接池也能自动检测并重置这些连接。 **3. 配置Proxool连接池** 配置Proxool主要涉及以下几个步骤: - **创建配置文件**:通常...
当应用需要访问数据库时,不再直接创建新的连接,而是从连接池中获取一个已存在的连接,用完后再归还,从而减少了数据库连接的创建和销毁过程。 2. c3p0数据源:c3p0数据源...
MySQL+Hibernate 连接空闲8小时自动断开问题解决方案 知识点1: Hibernate 的连接池机制 在 Hibernate 中,默认情况下 使用的是 DriverManagerConnectionProvider,这是一个简单的连接池机制。它将打开的连接缓存在...
而连接的建立、断开都由连接池自身来管理。 同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。 也可以通过其自身的管理机制来监视...
查阅相关文档后发现,造成报错的原因是:MySQL的默认设置为当一个连接的空闲时间超过8小时后,MySQL就会断开该连接,而C3P0连接池则以为被断开的连接依然有效。在这种情况下,如果客户端代码向C3P0连接池请求连接的...
连接池技术应运而生,旨在解决频繁创建和关闭数据库连接导致的性能问题。本篇将详细介绍两种主流的Java连接池实现:C3P0和Druid,以及辅助工具DBUtils。 首先,C3P0是一款开源的JDBC连接池,它实现了数据源和JNDI...
连接池的基本原理是预先创建一定数量的数据库连接,并存储在一个池中,当应用程序需要时,可以从池中获取连接,使用完毕后再归还,而不是每次操作数据库都创建新的连接。这种方式减少了频繁创建和关闭连接的开销,...
6. **性能优化**:通过使用连接池,可以减少数据库连接的建立和断开次数,降低系统资源消耗,提高系统的吞吐量和并发处理能力。 7. **配置管理**:SMProxy可能需要一些配置参数,例如最大连接数、最小连接数、超时...
1. **连接池管理**:C3P0能够自动创建、管理和回收数据库连接,确保在需要时能快速获取到连接,并在使用完毕后及时释放,降低系统资源消耗。 2. **连接测试**:在分配给应用程序之前,C3P0会检查连接的有效性,确保...
易语言源码 Postgre SQL 连接池。基于 http://www.sanye.cx/?id=12020 的源码 二次开发...封装了一些高级方法..包括,连接池+查询缓存+不知道真假的储存过程+慢查询记录。使用源码使用了E2EE支持库(模块部分思路借鉴...
4. **连接获取与释放**:应用程序从连接池中获取连接进行数据库操作,并在完成后将连接归还连接池。 #### 示例代码 ```java // 加载JDBC驱动 Class.forName("com.mysql.jdbc.Driver"); // 读取配置文件 ...
4. 连接池扩展性:C3P0支持多种数据库驱动,如MySQL、Oracle、PostgreSQL等,只需提供对应的JDBC驱动即可使用。 5. 配置灵活性:C3P0提供大量的可配置参数,用户可以根据实际需求调整,例如初始化连接数、最大连接...