- netliving
- 等级:


- 性别:

- 文章: 25
- 积分: 100
- 来自: 济南

|
由于dbcp可能存在bug,于是决定将dbcp更换为proxool, 编写过内容如下: 1、添加一个spring的proxool的数据源 <bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource" destroy-method="close"> <property name="driver"> <value>${jdbc.driverClassName}</value> </property> <property name="driverUrl"> <value>${jdbc.url};user=${jdbc.username};password=${jdbc.password}</value> </property> <property name="user"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <property name="alias"> <value>eomspool</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> 2、添加proxoll.jar到lib目录下 3、在web.xml中添加管理 <servlet-name>proxool</servlet-name> <servlet-class>org.logicalcobwebs.proxool.admin.servlet.AdminServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>proxool</servlet-name> <url-pattern>/proxool</url-pattern> </servlet-mapping> 经过上面的步骤已经将proxool的数据源搭建成功,但是由于程序中采用了Informix的Blob字段类型,需要取得数据库连接的原生连接, 经过查看spring的代码中包含了dbcp,c3p0的取得原生代码的连接, 没有proxool的,所以编写扩展ProxoolNativeJdbcExtractor /** * 扩展native jdbc对proxool的支持。 * <p> * proxool采用的是代理的方式管理连接池。 * * @author GL(netliving@163.com) * */ public class ProxoolNativeJdbcExtractor extends NativeJdbcExtractorAdapter { protected Connection doGetNativeConnection(Connection con) throws SQLException { if(con instanceof Factory){ Factory factory = (Factory)con; WrappedConnection wc = (WrappedConnection) factory.getCallback(0); return wc.getProxyConnection().getConnection(); } return con; } } 在程序中编写取得方法,完成系统的修改。启动后通过控制界面查看连接池的运行状态 
声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
| 返回顶楼 |
|
|
- sean_gao
- 等级:


- 性别:

- 文章: 87
- 积分: 254
- 来自: 上海

|
呵呵,我遇到的情况和LZ正相反,在我们的环境中proxool发挥不稳定,和其他组件配合时出现过内存泄露,于是换成了更简单直接的dbcp...目前运转良好。
|
| 返回顶楼 |
|
|
- xly_971223
- 等级:


- 性别:

- 文章: 651
- 积分: 591
- 来自: 北京

|
dbcp在长时间没有连接数据库时 由于数据库端的连接会超时释放 连接池获取连接会发生错误 不知道新版本的还有没有这个问题
|
| 返回顶楼 |
|
|
- netliving
- 等级:


- 性别:

- 文章: 25
- 积分: 100
- 来自: 济南

|
dbcp确实不太稳定,hibernate的作者也已经不支持使用dbcp数据源,他提倡使用c3p0或者proxool。
|
| 返回顶楼 |
|
|
- jacky2007
- 等级: 初级会员

- 性别:

- 文章: 8
- 积分: 0
- 来自: 广州

|
destroy-method="close"
ProxoolDataSource根本没close()这个方法,
是不是说重新加载或关闭这个系统时Proxool根本不会释放连接?
|
| 返回顶楼 |
|
|
- zfting
- 等级: 初级会员

- 性别:

- 文章: 9
- 积分: 10
- 来自: 成都

|
按照lz的方法配置出错!!java.lang.ClassNotFoundException: org.logicalcobwebs.proxool.ProxoolDataSource 我的包肯定在lib里面!!
|
| 返回顶楼 |
|
|
- dengqf
- 等级: 初级会员

- 性别:

- 文章: 7
- 积分: 30
- 来自: 北京

|
PROXOOL的配置中并没有CLOSE方法,
但目前好象并不影响使用
|
| 返回顶楼 |
|
|
- netliving
- 等级:


- 性别:

- 文章: 25
- 积分: 100
- 来自: 济南

|
ClassNotFound主要就是lib配置的问题,或者jar冲突,请确认一下你的classpath中的路径
|
| 返回顶楼 |
|
|