Spring+BoneCP+MyBatis下, 如果applicationcontex.xml中的boneCP datasource 最大连接数maxConnectionsPerPartition设为1且partitionCount也为1:
<bean id="dataSourceNewsletter" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="#{env['jdbc.driverClassName']}"/>
<property name="jdbcUrl" value="#{env['jdbc.url.newsletter']}"/>
<property name="username" value="#{env['jdbc.username']}"/>
<property name="password" value="#{env['jdbc.password']}"/>
<property name="idleConnectionTestPeriod" value="60"/>
<property name="maxConnectionsPerPartition" value="1"/>
<property name="minConnectionsPerPartition" value="1"/>
<property name="partitionCount" value="1"/>
<property name="acquireIncrement" value="1"/>
<property name="statementsCacheSize" value="100"/>
<property name="releaseHelperThreads" value="3"/>
</bean>
则junit单元测试时无法获取到这个唯一的connection,单元测试将会一直停留在下面的“Fetching JDBC Connection from DataSource”:
引用
INFO 00:05:08 (SQLErrorCodesFactory.java:126) - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
DEBUG 00:05:08 (SQLErrorCodesFactory.java:199) - Looking up default SQLErrorCodes for DataSource [JDBC URL = jdbc:postgresql://mxa.tianyu.com:5432/zhoukan, Username = www-data, partitions = 1, max (per partition) = 1, min (per partition) = 1, helper threads = 3, idle max age = 60 min, idle test period = 60 min]
DEBUG 00:05:08 (DataSourceUtils.java:110) - Fetching JDBC Connection from DataSource
上面log的前提是已打开相应包的log4j日志跟踪:
log4j.logger.org.mybatis=DEBUG
log4j.logger.org.springframework=DEBUG
log4j.logger.com.jolbox.bonecp=DEBUG
解决办法:将最大连接数maxConnectionsPerPartition设为>1
<bean id="dataSourceNewsletter" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
...
<property name="maxConnectionsPerPartition" value="3"/>
...
</bean>
这只是一个让单元测试能够进行下去的临时解决之道;真正的问题在于,仅有的一个connection为什么一直被占用,代码里哪里的不规范导致该connection一直得不到释放致使单元测试一直停留在“获取数据库连接...”阶段,而无法继续run下去?
后期说明:这不是个问题或bug;根本的原因还是因为conn只有一个,太少,而在复杂的业务操作代码中有多线程的多个Dao调用。连接被某个Dao调用占用了。当然,如果conn被长时间的占用,导致测试代码一直停留无法执行下去,就需要去查找可能存在的数据库死锁问题。
ref resources:
spring+ibatis 不打印错误信息:
http://blog.csdn.net/gaoshanwushui/article/details/5509845
分享到:
相关推荐
原创资源,码超所值,价廉物美。...所用的技术比较多,如Spring的IOC,AOP,Transactiion,Annotation,Spring_JUnit_Test及Log4j;Hibernate的JPA Annotation;BoneCP的数据库连接测等。是很好的学习资料!
mysql5.1、mybatis-spring1.1、bonecp0.6.7.2配置部署成功,可以修改为多数据源,多连接池底层应用。
最新版SSH框架(spring3.1.2+hibernate4.1.4+struts2.3.4+bonecp0.7.1) 使用bonecp作为数据库连接池工具 下载后可以运行,有例子,使用freemarker模板展示。
SpringMVC+Mybatis+Maven+Bonecp+EclipseSTS, Mapper使用MapperScannerConfigurer方式
连接池使用bonecp,中间加了一个检测页面URL合法性的filter,里面可以增加session检测等,适用于此框架的初学者(因只是通过一个登陆页面将框架构建出来) 注意:这个是在myeclipse10,j2ee6环境下建的,其他环境下不知道...
NULL 博文链接:https://wang-jia-sina-com.iteye.com/blog/1893639
在Spring3中配置数据源,包括DBCP,C3P0,Proxool,Bonecp主要的数据源,里面包含这些数据源的jar文件和依赖文件及配置文件。。 如Bonecp目前听说是最快的数据源,速度是传统的c3p0的25倍, bonecp.properties文件: ...
NULL 博文链接:https://javahuhui.iteye.com/blog/1456960
bonecp-0.7.1.RELEASE.jar bonecp-provider-0.7.0.jar google-collections-1.0.jar bonecp-spring-0.7.1.RELEASE.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
Follow this Spring configuration recipe for integrating BoneCP into your application. This is an example of how to fetch a JDBC connection directly for use via Spring (i.e. dealing with the datasource...
bonecp-0.7.1.RELEASE.jar bonecp-provider-0.7.0.jar google-collections-1.0.jar bonecp-spring-0.7.1.RELEASE.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
当今最快的连接池,比c3p0快25倍。CSDN测试通过,稳定快速。你值的拥有。
在用C3P0数据连接池的时候,一旦并发上来就坑不住了,因为C3P0存在BUG,c3p0在从连接池中获取和返回连接的时候,采用了异步的处理方式,使用一个线程池来异步的 把返回关闭了(没有真正关闭)的连接放入连接池中。...
struts和spring及ibatis框架的集成使用Spring代理bonecp的数据库连接池
spring 3.2.0+hibernate 4.1.6+struts2整合需要的jar包 的目录 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.3.jar asm-commons-3.3.jar aspectjweaver-1.5.3.jar bonecp-0.7.1.RELEASE.jar cglib-2.1.3.jar ...
代码内含BoneCp连接池和注解缓存。没有提供Spring的jar包。只要加入Spring的包就可以使用。或者只需要BoneCP和注解缓存的可以直接到lib里拿jar包。
bonecp数据库连接池jar包0.7.1: bonecp-0.7.1.RELEASE.jar bonecp-provider-0.7.1-rc2.jar bonecp-spring-0.7.1.RELEASE.jar
2013/03/21 18:20 115,709 bonecp-0.7.1.RELEASE.jar 2013/03/21 18:20 282,338 cglib-2.1.3.jar 2013/03/21 18:20 121,757 commons-dbcp.jar 2013/03/21 18:20 59,590 commons-fileupload-1.2.2.jar 2013/03/21 18:...
BoneCP(连接oracle例子+jar包)