`
sunxiang0918
  • 浏览: 46866 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

各种连接池的比较

    博客分类:
  • J2EE
阅读更多

  • hibernate开发组推荐使用c3p0;
  • spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样的问题,就是强行关闭连接或数据库重启后,无法reconnect ,告诉连接被重置,这个设置可以解决);
  • hibernate in action推荐使用c3p0和proxool;

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>oracle.jdbc.driver.OracleDriver</value>

   </property>

   <property name="jdbcUrl">

    <value>jdbc:oracle:thin:@218.202.151.179:58580:ORA9I</value>

   </property>

   <property name="user">

    <value>oa</value>

   </property>

   <property name="password">

    <value>XXXX</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>

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

 

        <property name="hibernateProperties">

<props>

<prop key="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</prop>

                             <prop key="hibernate.connection.url">jdbc:hsqldb:hsql://localhost/gpcswebdb</prop>

<prop key="hibernate.connection.username">sa</prop>

<prop key="hibernate.connection.password"></prop>

<prop key="hibernate.c3p0.min_size">5</prop>

<prop key="hibernate.c3p0.max_size">20</prop>

<prop key="hibernate.c3p0.timeout">1800</prop>

<prop key="hibernate.c3p0.max_statements">50</prop>

 

<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>

 

<prop key="hibernate.show_sql">false</prop>

<prop key="hibernate.use_outer_join">true</prop>

 

<prop key="hibernate.hbm2ddl.auto">update</prop>

 

<prop key="hibernate.jdbc.batch_size">0</prop>

<prop key="hibernate.jdbc.batch_versioned_data">true</prop>

<prop key="hibernate.max_fetch_depth">1</prop>

<prop key="hibernate.jdbc.use_streams_for_binary">true</prop>

</props>

</property>

<property name="mappingResources">

<list>

<value>com/citi/rpc/webentity/BusinessDay.hbm.xml</value>

<value>com/citi/rpc/webentity/Duty.hbm.xml</value>

<value>com/citi/rpc/webentity/Employee.hbm.xml</value>

<value>com/citi/rpc/webentity/TeamMember.hbm.xml</value>

<value>com/citi/rpc/webentity/Project.hbm.xml</value>

</list>

</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>
 

 

---------------------------------------------------------------------------

很多人都说proxool很好 —— 强烈推荐proxool,因为他不但可以监控后台。还可以有效的释放连接。在connection close时,也就是归还connection,

关闭所有的statement,并且判断是否autocommit,如果不行,就rollback,并且设置true,

可以参考proxool的org.logicalcobwebs.proxool.ConnectionResetter类

connection pool把connection reset置回initial state。

但是在网上搜索spring中配置proxool作为数据源连接池的资料却几乎找不到详细点的。So自己整理如下:

 

web.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>

<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>
 

-------------------------

 

proxool.xml

-------------------------

<?xml version="1.0" encoding="UTF-8"?>

<proxool-config>

<proxool>

    <alias>blogdb</alias>

    <driver-url>jdbc:oracle:thin:@127.0.0.1:1521:ORADB</driver-url>

    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

    <driver-properties>

      <property name="user" value="lizongbo"/>

      <property name="password" value="password"/>

    </driver-properties>

    <maximum-connection-count>10</maximum-connection-count>

    <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>

</proxool>

</proxool-config>
 

-------------------------

 

spring里的两种配置:

one: <!-- 与上面的proxool以及web.xml里结合使用-->

 

<bean id="mainDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

    <property name="driverClassName">

    <value>org.logicalcobwebs.proxool.ProxoolDriver</value>

    </property>

    <property name="url">

    <value>proxool.blogdb</value>

    </property>

    </bean>
 

 

two:<!-- 单独的类似dbcp的使用-->

<bean id="mainDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close">

    <property name="driver">

      <value>oracle.jdbc.driver.OracleDriver</value>

    </property>

    <property name="driverUrl">

      <value>jdbc:oracle:thin:lizongbo/password@127.0.0.1:1521:ORADB</value>    

<!--用户名和密码写在一起才调用成功,不然会报调用无效的参数 错误,下面设置用户名和密码的property好像是无效的,其它数据库也是这样

比如mysql的也要把用户名和密码写在url里:<property name="driverUrl" value="jdbc:mysql://localhost:3306/blogdb?user=lizongbo&password=lizongbo" />

-->

    </property>

    <property name="user"> <!-- 必须在这里也设置,但是 proxool却不使用它,或许是个bug-->

      <value>lizongbo</value>

    </property>

    <property name="password"> <!-- 必须在这里也设置,但是 proxool却不使用它,或许是个bug-->

      <value>lizongbo</value>

    </property>

    <property name="alias">

      <value>lizongbo</value>

    </property>

    <property name="houseKeepingSleepTime">

      <value>90000</value>

    </property>

    <property name="prototypeCount">

      <value>5</value>

    </property>

    <property name="maximumConnectionCount">

      <value>100</value>

    </property>

    <property name="minimumConnectionCount">

      <value>10</value>

    </property>

    <property name="trace">

      <value>true</value>

    </property>

    <property name="verbose">

      <value>true</value>

    </property>

</bean>
 

 

分享到:
评论

相关推荐

    java hibernate中各种连接池比较

    Java Hibernate 中的各种连接池在应用程序开发中扮演着关键角色,它们负责管理数据库连接,提高性能并减少资源消耗。本文将对比分析三个常见的开源数据连接池:C3P0、DBCP 和 Proxool,并深入探讨它们的主要参数和...

    连接池案例 连接池案例

    在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要技术。连接池的基本思想是重用已建立的数据库连接,避免频繁创建和销毁连接带来的性能开销。本篇文章将深入探讨连接池的概念、工作原理以及如何在实际...

    Spring各种连接池的比较.doc

    在Spring框架中,数据库连接池是管理数据库连接的关键组件,它能提高应用性能,通过复用已存在的连接而不是每次请求时创建新的连接。本篇文章将深入探讨Spring支持的几种主要连接池,包括Apache DBCP、C3P0以及...

    kafka生产者连接池

    为了优化性能和提高效率,开发人员常常会利用连接池技术来管理Kafka生产者的连接。本文将深入探讨"Kafka生产者连接池"的概念、实现原理以及它如何提升系统性能。 Kafka生产者连接池是一种资源复用机制,它允许多个...

    数据库连接池以及hibernate对各种连接池的整合

    标题提到的“数据库连接池以及hibernate对各种连接池的整合”是指在Java应用中,特别是使用Hibernate作为持久层框架时,如何集成和配置不同的数据库连接池技术。以下是一些主要的开源数据库连接池及其特点: 1. **...

    各种数据库连接池

    标题中提到的"各种数据库连接池",包括了c3p、DBCP和Proxool,这些都是Java环境下常见的数据库连接池实现: 1. **C3P0**:这是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。...

    okhttp中连接池实现

    它的核心特性之一就是连接池(Connection Pool),它在提高网络性能和减少延迟方面起到了关键作用。本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是...

    tomcat连接池与阿里Druid连接池

    Tomcat 连接池和阿里 Druid 连接池的配置和比较 Tomcat 连接池是一种基于 Java 的数据库连接池实现,提供了高效、可靠的数据库连接管理。阿里 Druid 连接池是阿里巴巴开发的开源连接池,提供了高性能、可靠的数据库...

    java ftp连接池

    在Java中,`commons-pool`库是一个广泛使用的对象池框架,它可以用于构建各种类型的连接池,包括FTP连接池。`commons-pool`提供了基础的池化机制,开发者需要根据FTP协议实现具体的FTP连接对象和管理策略。 在实际...

    Tomcat连接池配置.doc

    Tomcat 连接池配置详解 Tomcat 连接池配置是 Web 应用程序中一个非常重要的组件,它负责管理和维护数据库连接,确保数据访问的高速和安全性。本文将详细介绍 Tomcat 连接池配置的步骤和原理,帮助读者快速掌握 ...

    Mongodb连接池for java

    在标签中,“MongoDB”是数据库的名字,“Mongo连接池”指的是针对MongoDB数据库的连接池,“连接池”是数据库连接管理的一个通用概念,适用于各种数据库系统。 在压缩包“mongodb_pool”中,可能包含了以下内容: ...

    C# 数据库连接池 C# 数据库连接池

    数据库连接池是数据库管理中的一个重要概念,它在C#编程中扮演着优化数据库操作的关键角色。C#数据库连接池是一种管理数据库连接的技术,通过复用已存在的连接而不是每次请求时都创建新的连接,从而提高数据库操作的...

    C#高效数据库连接池源码

    数据库连接池是数据库管理中的重要概念,特别是在高并发和大数据量的应用场景下,它能显著提升性能并降低系统资源消耗。在C#编程环境中,我们可以使用自定义的数据库连接池来实现这一功能。本篇文章将深入探讨“C#...

    c# mysql数据库连接池实现

    在.NET Core 2.1框架下,可以使用.NET Standard库来实现高效、优化的数据库连接管理,特别是通过连接池来提高性能。本文将深入探讨如何在C#中使用MySQL数据库连接池。 首先,我们需要了解什么是数据库连接池。...

    java socket连接池 实现

    Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...

    socket 客户端连接池实现

    Socket客户端连接池是一种在分布式系统或网络编程中提高性能和效率的重要技术。它允许应用程序预先创建并维护一组可重用的Socket连接,从而避免了每次通信时建立新连接的开销。本文将深入探讨Socket客户端连接池的...

    java 数据库 连接池驱动.rar

    Java数据库连接池驱动是Java应用程序在访问数据库时用于优化资源管理的一种技术。它提供了一种在多个数据库操作之间重用数据库连接的方式,从而避免了频繁创建和关闭连接带来的性能开销。连接池的核心思想是池化资源...

    Java连接SAP系统所用的JCo连接池的配置和使用

    "Java连接SAP系统所用的JCo连接池的配置和使用" Java连接SAP系统所用的JCo连接池的配置和使用是指在Java应用程序中使用JCo连接池来连接SAP R3系统的技术。JCo(Java Connector)是SAP提供的一种Java API,用于连接...

    java socket连接池

    Java Socket连接池是一种优化网络通信性能的技术,它允许应用程序复用已经建立的Socket连接,从而减少因频繁创建和销毁Socket连接而产生的开销。在高并发的服务器环境中,Socket连接池能够有效地提升系统效率和响应...

Global site tag (gtag.js) - Google Analytics