- 浏览: 52673 次
- 性别:
- 来自: 武汉
最新评论
-
zhangdong1986:
great article, the content cove ...
利用eclipse编写高质量的java代码
最近遇到了一个奇怪的问题,使用了Apache的连接池,当数据库重启之后,就无法连接到数据库上了,开始以为是程序的问题,看了一些代码,无用。后经同事提示,在连接池的配置中加了一项:
<parameter>
<name>validationQuery</name>
<value>SELECT 1</value>
</parameter>
就Ok了,才明白这个是用来检查连接的,当访问量不大时,连接池中的连接足够用,它不会去申请新的连接,但原有的连接已经被重置了,也就是reset了,无法使用,因此对于使用连接池,应该加上面的配置,以检查数据库连接。
同样,使用spring来配置连接池的时候也应该加上:
<property name="validationQuery">
<value>SELECT 1</value>
</property>
防止数据库重新启动后出现问题。
spring下的各种连接池的比较
hibernate
开发组推荐c3p0,spring开发组推荐dbcp,但是dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法
reconnect ,告诉连接被重置,这个设置可以解决。hibernate in action推荐c3p0和proxool。
我推荐proxool,因为他不但可以监控后台。还可以有效的释放连接。在connection close时,也就是归还connection,
关闭所有的statement,并且判断是否autocommit,如果不行,就rollback,并且设置true,
可以参考proxool的org.logicalcobwebs.proxool.ConnectionResetter类
connection pool把connection reset置回initial state。
dbcp的配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
</bean>
c3p0的配置, 注意是''driverClass' , 'jdbcUrl', 'user' , 'password'
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass">
<value>net.sourceforge.jtds.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:jtds:sqlserver://localhost:1433/hua</value>
</property>
<property name="user">
<value>sa</value>
</property>
<property name="password">
<value>hua</value>
</property>
<property name="minPoolSize">
<value>15</value>
</property>
<property name="acquireIncrement">
<value>5</value>
</property>
<property name="maxPoolSize">
<value>25</value>
</property>
</bean>
或
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>${db.driverClass}</value>
</property>
<property name="jdbcUrl">
<value>${db.url}</value>
</property>
<!--
<property name="user">
<value>${db.user}</value>
</property>
<property name="password">
<value>${db.pass}</value>
</property>
-->
<property name="properties">
<props>
<prop key="c3p0.acquire_increment">5</prop>
<prop key="c3p0.idle_test_period">100</prop>
<prop key="c3p0.max_size">100</prop>
<prop key="c3p0.max_statements">0</prop>
<prop key="c3p0.min_size">10</prop>
<prop key="user">${db.user}</prop>
<prop key="password">${db.pass}</prop>
</props>
</property>
</bean>
xapool的配置
<bean id="dataSource" class="org.enhydra.jdbc.pool.StandardPoolDataSource" destroy-method="stopPool">
<constructor-arg index="0">
<bean class="org.enhydra.jdbc.standard.StandardConnectionPoolDataSource">
<property name="driverName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://localhost/dbname</value></property>
</bean>
</constructor-arg>
<property name="user"><value>root</value></property>
<property name="password"><value>mypass</value></property>
<property name="minSize"><value>1</value></property>
<property name="maxSize"><value>5</value></property>
<property name="jdbcTestStmt"><value>select 1</value></property>
</bean>
c-jdbc的配置
<bean id="dataSource" class="org.objectweb.cjdbc.driver.DataSource">
<property name="url"><value>jdbc:cjdbc://127.0.0.1:25322/vdb?user=vuser</value></property>
</bean>
weblogic的连接池解决办法:Test Reserved Connections: 如果选择了这个选项,服务器会在把连接提供给客户端之前
对其进行测试。 Test Created Connections: 如果选择了这个选项,就会在创建一个JDBC
连接之后和在把它添加到JDBC连接池中的可用连接列表之前,对该JDBC连接进行测试。
tomcat的jndi关于dbcp的配置:
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.sybase.jdbc2.jdbc.SybDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>xyz</value>
</parameter>
<parameter>
<name>username</name>
<value>xyz</value>
</parameter>
<parameter>
<name>password</name>
<value>xyz</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>5</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>5</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>select count(*) from sometable where 1 = 0</value>
</parameter>
<parameter>
<name>testOnBorrow</name>
<value>true</value>
</parameter>
发表评论
-
JVM最大分配内存
2011-08-27 16:28 935分析了当前比较流行的 ... -
apache+tomcat 负载均衡
2011-07-15 17:10 797其实无论是分布式,数据缓存,还是负载均衡,无非就是改善网站的性 ... -
关于java文件编译后,同一个文件出现"$"的class
2011-06-08 15:00 1285在java中,如果在一个类中定义了内部类,刚会生成: supe ... -
jdbc操作测试类
2011-05-31 20:05 759package com.fs.test; import ... -
Spring中JdbcTemplate类query的使用例子
2011-05-12 21:01 1149/** 使用三种Callback接口 ... -
Properties操作例子类
2011-04-19 23:48 799import java.io.FileInputStream; ... -
Java中解决所有路径问题
2011-03-19 02:30 554Java中使用的路径,分为两种:绝对路径和相对路径。归 ... -
利用eclipse编写高质量的java代码
2011-03-19 01:51 853敏捷开发的理念已经 ... -
java遍历文件夹
2010-07-16 17:05 629A.不使用递归:import java.io.File;imp ... -
jvm学习
2010-07-16 17:07 643由于最近时间充足, ... -
servlet页面跳转
2010-07-19 11:45 615一直对Servlet的几种页面 ... -
tomcat内存溢出
2010-08-05 15:17 691这几天,在服务器上增加了一个host,但自从增加了这个host ... -
tomcat定时重启
2010-08-20 09:06 1115保存以下脚本成tomcat.bat,计划任务指定每天4点执行该 ... -
cxf2.1服务端的构建过程
2010-11-20 10:48 622Setting up your build Open ... -
struts2+json+jquery 级联查询
2010-12-09 15:47 1329js代码 $(document).ready( funct ...
相关推荐
在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能有效地提高应用程序的性能和资源利用率。在上述内容中,提到了两种常用的连接池实现:Apache的DBCP(BasicDataSource)和C3P0(ComboPooledDataSource...
在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能提高应用性能,通过复用已存在的连接而不是每次请求时创建新的连接。本篇文章将深入探讨Spring支持的几种主要连接池,包括Apache DBCP、C3P0以及...
### Spring框架中C3P0连接池配置详解 在Java Web开发中,数据库连接管理是一项重要的任务。不当的连接管理可能会导致性能问题甚至系统崩溃。Spring框架提供了多种配置数据库连接池的方式,其中C3P0是一种广泛使用的...
Spring2.5配置proxool连接池
本文将详细介绍如何在Spring MVC中整合Redis,并利用连接池来优化性能。 首先,我们需要引入Redis的相关依赖。在Maven项目中,可以在pom.xml文件中添加`spring-data-redis`和`jedis`库,这两个库分别提供了Spring对...
本文将深入探讨如何在Spring环境下配置几种常用的数据库连接池,包括HikariCP、Druid和Apache DBCP2。 一、HikariCP HikariCP被誉为最快的Java数据库连接池,它的设计目标是提供最小的延迟和最大的并发性能。在...
本篇文章将详细探讨在Spring环境下配置几种常用的数据库连接池,并提供配置属性的详尽解析和实例应用。 1. **HikariCP** HikariCP是目前非常流行的一款高性能连接池,以其轻量级、高效而受到广泛赞誉。在Spring中...
在Spring框架中,连接池是用于管理数据库连接的重要组件,它可以显著提高应用程序的性能和效率。连接池通过预先创建一定数量的数据库连接并缓存起来,当应用需要时,可以直接从池中获取,而不是每次都去建立新的连接...
"连接池与Spring、Hibernate结合"这个主题涉及到的是如何有效地管理和复用数据库连接,以提高应用程序的效率和响应速度。这里我们将深入探讨连接池的概念,Spring框架中的数据源配置,以及Hibernate的集成,以及它们...
本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...
Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...
spring声明式事务管理+jdbc+连接池 包内为代码,下载可直接执行。 一直用s2sh,感觉hibernate不好用,所以写了一个spring声明式事务管理+jdbc+连接池。
在实际应用中,开发者通常会在Spring框架中配置数据源,选择合适的连接池实现,如在Spring Boot项目中,可以通过YAML或properties配置文件设置连接池的相关参数: ```yaml spring: datasource: type: ...
总之,Spring JDBCTemplate结合连接池提供了一个高效且易于使用的数据库访问层,它降低了数据库操作的复杂性,同时也提升了系统的性能。正确配置和使用这些库,可以极大地优化我们的数据库应用程序。
首先,让我们来理解Spring Boot中的多连接池。在处理大量并发请求时,数据库连接池是必不可少的,它可以有效地管理和重用数据库连接,提高系统性能。在Spring Boot中,常见的连接池有HikariCP、Druid和Tomcat JDBC等...
Spring Boot使用HikariCP连接池的详细指南 在现代Java开发中,Spring Boot框架以其简洁性和自动化配置受到广泛欢迎。Spring Boot 2.x版本默认采用HikariCP作为其数据连接池,因为HikariCP以其高效和高性能著称。...
【Thrift服务集成Spring及连接池】的知识点详解 Thrift是一个开源的跨语言服务框架,由Facebook在2007年创建并贡献给了Apache基金会。它的主要目标是解决系统间的大数据量通信问题,同时支持多语言环境下的跨平台...
标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...