- 浏览: 320357 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
u010467022:
改为xxx,get(class,id)也不行,唯有lazy=f ...
failed to lazily initialize a collection of role问题 -
猜不透:
哥们,及时雨啊
failed to lazily initialize a collection of role问题 -
luhan158:
额,看不懂多少
failed to lazily initialize a collection of role问题 -
xiaoping8411:
<Connector port="80 ...
Tomcat优化 -
Mr.Cheney:
搜藏了 thanks
jQuery的插件列表
概述 目前数据库连接池产品是非常多的,DBCP、C3P0、Proxool等都是非常优秀的产品。连接池的性能和稳定性会对我们的程序造成极大的影响,因此,有必要对这些连接池产品进行一些选择。另外,连接池的配置是否恰当,将会决定该连接池的性能和稳定性表现,所以,本文将给出连接池配置的一些要点。在这些连接池产品中作出选择是比较困难的,每个优秀的产品都有它自身的特点,而且也很难找出一个在各种运行环境中都最表现最优的产品,因此,本文将选出一些目前来说比较优秀的产品,简要介绍一下它们的配置要点,以及如何使用在我们的项目中。至于在生产环境中,哪种产品会表现最好,则...。 Hibernate开发组推荐使用c3p0,spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect,但可通过配置来解决),Hibernate in action推荐使用c3p0和proxool。其它还有不少商业产品,但性能与稳定性的整体表现反而不如这些开源数据库连接池。从网上的搜索情况来看,也是DBCP、C3P0、Proxool的使用较为广泛。但是关于它们的性能与稳定性,众说不一,难以得到结论。 使用 三个产品都能很方便地整合到Springframework中,也都可以配置为JNDI资源,因此,它们可以随意更换,不会影响程序代码。在生产环境中,如果需要开放我们的数据库给其它系统使用或共享,我推荐使用应用服务器的JNDI。在开发环境中,我们不使用JNDI。以下的配置是不使用JNDI时的Spring配置,至于JNDI的配置,请参考相关文档,该文不做叙述,但配置项基本相同。 DBCP是Apache的一个开源项目(http://jakarta.apache.org/commons/dbcp/index.html),它依赖Apache的另外2个开源项目:commons.collections和commons.pool。下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。在我们的项目中,可通过Maven来管理。 C3P0 C3P0受到不少人的推荐,官方地址是:http://sourceforge.net/projects/c3p0。基本配置如下: Proxool 这是一个Java SQL Driver驱动程序,可以透明地为你现存的JDBC驱动程序增加连接池的功能。另外它提供一个Web监控程序,可以实时的查看你系统所有连接池的使用情况。官方地址:http://proxool.sourceforge.net。Proxool的配置方式有多种,类似于以上配置的方式如下: 另外,也可以在单独的一个文件中配置Proxool。比如,在WEB-INF/下建立proxool.xml文件: 然后,需要在应用系统启动时读入这个文件。Proxool提供了一个Servlet来做这个事情,编辑WEB-INF/web.xml,加入以下几行: 然后,在Spring的配置中可以这样写: 如果需要监控,可以在WEB-INF/web.xml中加上: 详见:http://63542424.blog.163.com/blog/static/18883900200923144051992/
DBCP是Apache出品的,开发也较为活跃,也是使用极为广泛的一个数据库连接池产品。从网上搜索的资料以及自己以往使用DBCP的经验来看,DBCP的稳定性有些问题。但是它的开发较为活跃,所以我们可以相信它会解决这些问题,而且有些问题是可以通过额外的配置来解决的。
C3P0,稳定性似乎不错,在这方面似乎有很好的口碑。至于性能,应该不是最好的,算是中规中矩的类型。
Proxool的口碑似乎很好,不大见到负面的评价,从官方资料上来看,有许多有用的特性和特点,也是许多人推荐的。但是开发不够活跃,使用者也较少。
我选定这三个产品作为我们系统的数据库连接池,并使用Proxool作为目前开发环境中的连接池产品(Proxool便于监控)。
使用和配置
DBCP
在配置时,不常用但在生产环境中很有用的参数有:removeAbandoned 、removeAbandonedTimeout、maxWait。如果设置了rmoveAbandoned=true,那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的Connection的回收,回收的 Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的Connection。
如果设置了logAbandoned=true,DBCP将会在回收Connection之后,打印回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了这样的信息,在调试的时候很有用。
基本配置如下:
Xml代码
<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}"/>
<!--initialSize: 初始化连接-->
<property name="initialSize" value="5"/>
<!--maxIdle: 最大空闲连接-->
<property name="maxIdle" value="10"/>
<!--minIdle: 最小空闲连接-->
<property name="minIdle" value="5"/>
<!--maxActive: 最大连接数量-->
<property name="maxActive" value="15"/>
<!--removeAbandoned: 是否自动回收超时连接-->
<property name="removeAbandoned" value="true"/>
<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->
<property name="removeAbandonedTimeout" value="180"/>
<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒-->
<property name="maxWait" value="3000"/>
<property name="validationQuery">
<value>SELECT 1</value>
</property>
<property name="testOnBorrow">
<value>true</value>
</property>
</bean>
Xml代码
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${db.driverClassName}"/>
<property name="jdbcUrl" value="${db.url}"/>
<!--
<property name="user" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
-->
<property name="properties">
<props>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3-->
<prop key="c3p0.acquire_increment">5</prop>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<prop key="c3p0.idle_test_period">60</prop>
<prop key="c3p0.max_size">15</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>
Xml代码
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">
<property name="driver" value="${db.driverClassName}"/>
<property name="driverUrl" value="${db.url}"/>
<!--用户名和密码写在一起才调用成功,不然会报 调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样
比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />
-->
<property name="user" value="${db.user}"/>
<property name="password" value="${db.pass}"/>
<property name="alias" value="${db.alias}"/>
<property name="houseKeepingSleepTime" value="90000"/>
<property name="prototypeCount" value="5"/>
<property name="maximumConnectionCount" value="100"/>
<property name="minimumConnectionCount" value="10"/>
<property name="trace" value="true"/>
<property name="verbose" value="true"/>
</bean>
Xml代码
<?xml version="1.0" encoding="UTF-8"?>
<proxool-config>
<proxool>
<alias>mimir</alias>
<driver-url>jdbc:mysql://localhost:3306/mimirdb?user=mimir&password=mimir"</driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="mimir"/>
<property name="password" value="mimir"/>
</driver-properties>
<maximum-connection-count>10</maximum-connection-count>
<house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
</proxool>
</proxool-config>
Xml代码
<servlet>
<servlet-name>proxoolServletConfigurator</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>
Xml代码
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver"/>
<property name="url" value="proxool.mimir"/>
</bean>
Xml代码
<servlet>
<servlet-name>proxooladmin</servlet-name>
<servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>proxooladmin</servlet-name>
<url-pattern>/proxooladmin</url-pattern>
</servlet-mapping>
发表评论
-
Java内存控制
2011-04-24 21:38 1504读取内存信息的函数 Runtime.getRuntim ... -
Java中String与byte[]的转换
2011-04-15 09:43 1461String -> byte[]: byte[] ... -
[转] Java中的hashCode方法
2010-09-26 15:32 1094首先,想要明白hashCode ... -
修改struts2中action的拓展名
2010-09-26 12:26 1054struts2中action的默认拓展名是".act ... -
Java类中的文件路径
2010-05-05 16:29 2122很多时候程序需要读取工程中的一些文件(如xml、propert ... -
float保留两位小数的方法
2010-05-05 16:19 4094有时候需要对float的小数位数进行限制,通常最简单的两 ... -
iBatis中insert语句返回插入后id的方法
2010-05-01 16:59 3294一直都在用iBatis来完成数据的持久化操作,可是一直都不知道 ... -
用BlazeDS实现Flex与Java通信
2010-03-12 19:26 1638最近项目中需要Flex与Java进行通信,初步选定使用Blaz ... -
iBatis对于空值的处理
2010-02-25 10:39 2018使用Ibatis作为数据库持久层的人都有体会,Iba ... -
iBatis结果集不支持char类型
2010-02-25 10:14 1450项目中用ibatis来完成持久化操作偶然间发现ibat ... -
[转]ibatis缓存的使用
2010-02-24 09:48 1015... -
roller源码研究(二)-- 博客中的ping
2009-11-25 15:01 1159今天在研究roller的 ... -
roller源码研究(一)-- eclipse中roller环境搭建
2009-11-25 13:10 3860最近一直在查找研究一些开源系统的源码,之前锁定了php ... -
一个简单的通知管理系统
2009-11-05 21:26 1380最近偶然的机会做了个小程序--通知管理系统,功能如下: ... -
连接DB2时“encoding not supported”问题解决
2009-10-11 22:07 3521使用JDBC连接DB2时,发生错误: com.ibm.db2 ... -
Eclipse下搭建Struts2开发环境
2009-10-09 15:54 14220作者:bukebushuo 来源 ... -
Jsp+Servlet+JDBC实现登录注册(二)
2009-07-13 22:58 48831. 开发数据库访问类 由于本次实验中只涉及到了 ... -
Jsp+Servlet+JDBC实现登录注册(一)
2009-07-13 22:54 48731. 搭建环境 2. 在MySQL 中建 ... -
EJB3.0实现登录注册(二)
2009-07-12 22:11 10339. 编写消息驱动bean 消息驱动bean的主要用于接受和 ... -
EJB3.0实现登录注册(一)
2009-07-12 22:08 1727环境 IDE:Eclipse3.4(JavaEE版) ...
相关推荐
context.xml, 数据库连接池配置文
在进行数据库连接池配置时,需要注意以下几点: 1. 确保数据库驱动版本与数据库版本兼容。 2. `maxActive`属性定义了连接池中最大的活跃连接数,要根据应用程序的实际并发需求来设置。 3. `maxIdle`属性定义了连接...
Java数据库连接池是管理数据库连接的一种机制,它可以有效地复用数据库连接,避免每次数据库操作时创建和销毁连接的开销,从而提高了应用的性能。在Java中,有多种数据库连接池实现,包括C3P0、DBCP和Proxool等。 *...
tomcat数据库连接池配置网上文章&csdn上的代码tomcat数据库连接池配置网上文章&csdn上的代码tomcat数据库连接池配置网上文章&csdn上的代码tomcat数据库连接池配置网上文章&csdn上的代码tomcat数据库连接池配置网上...
### Tomcat5的数据库连接池配置详解 #### 引言 在Java Web开发中,数据库连接池是一项关键的技术,能够显著提升应用性能和资源利用效率。对于Tomcat5这一历史较为悠久但依然在某些场景中活跃的服务器软件,正确...
### 数据库连接池配置终极指南 #### 一、前言 在现代软件开发过程中,数据库作为数据存储的核心组件,其性能直接影响着应用的整体表现。为了提高数据库访问效率并减少资源消耗,合理配置数据库连接池至关重要。本...
WebSphere 数据库连接池配置 WebSphere 数据库连接池配置是指在 WebSphere 应用服务器中配置数据库连接池,以便更好地管理数据库连接。下面是 WebSphere 数据库连接池配置的详细过程: 一、数据库连接池配置...
WebSphere 数据库连接池配置 在 WebSphere 环境中,配置数据库连接池是非常重要的一步骤。数据库连接池是指在应用服务器中维护的一组数据库连接的集合,使应用程序能够能够快速地获取数据库连接,从而提高应用程序...
### Tomcat 数据库连接池配置详解 在Java Web开发中,Tomcat作为一款广泛使用的应用服务器,其数据库连接池配置是十分重要的一个环节。合理的配置能够显著提高应用程序的性能和稳定性。本文将以MySQL数据库为例,...
《TOMCAT数据库连接池配置详解》 TOMCAT数据库连接池配置是Java Web开发中不可或缺的一环,它能够有效地管理和优化数据库连接,提高系统性能。以下是对TOMCAT数据库连接池配置的详细说明。 首先,你需要下载TOMCAT...
在这个文件中,定义数据库连接池配置,如下: ```xml driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://your_server:port;databaseName=your_database" username=...
### Proxool数据库连接池配置详解 #### 一、引言 Proxool是一个轻量级的Java数据库连接池管理工具,它可以帮助开发者更高效地管理和利用数据库连接资源。通过Proxool,可以显著减少数据库连接创建和关闭的开销,...
tomcat数据库连接池配置.TXTtomcat数据库连接池配置.TXTtomcat数据库连接池配置.TXTtomcat数据库连接池配置.TXT
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
【单机集群搭建及数据库连接池配置】 在IT领域,特别是在服务器管理和分布式系统设计中,单机集群的搭建是一项基础但至关重要的工作。这通常涉及到多个服务器实例的配置,以实现高可用性和负载均衡。本篇文章将详细...
达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,达梦7数据库连接池,jdbcDriver,
orcal数据库连接池配置信息 可以直接复制到tomcat 配置文件下使用