<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driver">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
</bean> html
這樣咱們就有了一個不依賴任何服務器的數據庫鏈接池java
話外音:web
Spring易於測試是spring理念的核心,spring爲咱們定義了一個DriverManagerDataSource類,讓咱們更方便的對代碼進行單元測試時使用dataSourcespring
DriverManagerDataSouce dataSource=new DriverManagerDataSouce();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPAssword(password);
數據庫
spring中dbcp更換爲proxoolapache
因爲dbcp可能存在bug,因而決定將dbcp更換爲proxool,
編寫過內容以下:
一、添加一個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>
二、添加proxoll.jar到lib目錄下
三、在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){java自動關機、java管屏保代碼、java關機重啓
Factory factory = (Factory)con;
WrappedConnection wc = (WrappedConnection) factory.getCallback(0);
return wc.getProxyConnection().getConnection();
}
return con;
}
}app
在程序中編寫取得方法,完成系統的修改。啓動後經過控制界面查看鏈接池的運行狀態 單元測試