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