日期:2014-05-16 浏览次数:20564 次
由于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;
?}
}
在程序中编写取得方法,完成系统的修改。启动后通过控制界面查看连接池的运行状态