问题:发现刚刚发布的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 

欢迎大家访问我的个人网站 萌萌的IT人