- 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>
分享到:
相关推荐
觉得有用就下,shansun123@126.com
Spring各种连接池的比较 各种各样的连接池进行分析,与分享。
连接池连接池连接池连接池连接池
连接池案例
各种数据库连接池 c3p dbcp proxool
对于多应用共享同一数据库的系统而言,可在应用层通过数据库连接的配置,实现数据库连接池技术。某一应用最大可用数据库连接数的限制,避免某一应用独占所有数据库资源。 在较为完备的数据库连接池实现中,可根据...
C# 数据库连接池 C# 数据库连接池 C# 数据库连接池 C# 数据库连接池
连接池 连接池 连接池 连接池
整合网络上关于数据库连接池的资料,结合hibernate对常用数据库连接池进行整合
连接池 连接池 java JSP连接池 连接池 java JSP连接池 连接池 java JSP连接池 连接池 java JSP
封装抽取了一个kafka生产者的连接池,能很好的用池的方式对kafka生产者连接点进行有效的管理
因为打开和关闭数据库连接开销比较大,所以连接池对于与数据库链接资源的控制上,加快客户端程序的效率都有很大地帮助。 示例中会看到如何控制连接池个数,链接对象关闭连接放回链接池中,有其他连接对象打开连接时...
代码中包含okhhtp中连接池的设计,包含连接对象的添加,连接对象何时被移除。
传统的HttpURLConnection并不支持连接池,如果要实现连接池的机制,还需要自己来管理连接对象。对于网络请求这种底层相对复杂的操作,个人以为如果有可用的其他方案,也没有必要自己去管理连接对象。 除了...
Weblogic 连接池配置数据库断掉重连的问题 在 Weblogic 中,连接池配置数据库断掉重连是一个非常重要的问题。连接池配置是 Weblogic 中的一种机制,用于管理与数据库的连接。然而,在实际应用中,我们经常会遇到...
这个文档详细讲述了mysql数据库连接池的配置以及数据库连接池的工作原理。
* 数据库连接池特点: * 获取连接时不需要了解连接的名字,连接池内部维护连接的名字 * 支持多线程,保证获取到的连接一定是没有被其他线程正在使用 * 按需创建连接,可以创建多个连接,可以控制连接的数量 * 连接...
Tomcat连接池配置,包你学会tomcat连接池的使用
Tomcat6配置连接池很全面的东东
这是用连接池技术管理连接oracle数据库的工具类代码,如果想连接MySQL,直接修改配置文件即可。