問題:發現剛剛發布的spring應用程序經常出現獲取不到數據庫連接的timeout 錯誤。仔細看代碼后發現,有段代碼需要連續發起兩個query,常常是發第二個query時出現數據庫連接獲取不到的錯誤

原因:仔細讀了spring文檔,發現由于使用的datasource是Spring提供的DriverManagerDataSource,而該dataSource是不支持Connection Pool的,所以性能很低,Spring也是推薦不要采用這個dataSource。改用Apache的DBCP dataSource后解決該問題。


修改配置:

bean id="dataSource"     class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">    
 
<property name="driverClassName" value="${jdbc.driverClassName}"/>    
 
<property name="url" value="${jdbc.url}"/>     
<property name="username" value="${jdbc.username}"/>     
<property name="password" value="${jdbc.password}"/> 
</bean>  
<context:property-placeholder location="jdbc.properties"/>

參考:http://static.springsource.org/spring/docs/current/spring-framework-reference/html/jdbc.html#jdbc-DataSourceTransactionManager