Q:

Deadlock issue in DBCP deployed on Tomcat

I'm using DBCP data source (with default configuration) in Spring configuration to manage my connections to the database, and I'm running into a deadlock condition when the number of clients increase. 
I found that there is a deadlock issue in DBCP 1.2.1 which I was using, which was supposed to be resolved in 1.4.  So I upgraded to 1.4, but the issue still persists. 
In the thread dump, there are many threads blocked with the following stack trace on top:
   java.lang. Thread. State: WAITING on org.apache.commons.pool.impl. GenericObjectPool$Latch@b6b09e
at java.lang. Object.wait(Native Method)
at java.lang. Object.wait(Object.java:485)
at org.apache.commons.pool.impl. GenericObjectPool.borrowObject(GenericObjectPool.java:1104)
at org.apache.commons.dbcp. PoolingDataSource.getConnection(PoolingDataSource.java:106)
at org.apache.commons.dbcp. BasicDataSource.getConnection(BasicDataSource.java:1044)
at org.springframework.jdbc.datasource. DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:200)
at org.springframework.transaction.support. AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:350)
at org.springframework.transaction.interceptor. TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:261)
at org.springframework.transaction.interceptor. TransactionInterceptor.invoke(TransactionInterceptor.java:101)
at org.springframework.aop.framework. ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:160)
at org.springframework.aop.interceptor. ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework. ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework. Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)

Any suggestions are welcome! 

A:

I switched to c3p0, few years back.  You can try that.  I believe you didn't have to change much, it's just a game of configuration. 
Somewhat related thread, Connection pooling options with JDBC: DBCP vs C3P0.  Well, actually I made it related. 
[edited, 19/10/12]
Tomcat 7 has a decent connection pool, The Tomcat JDBC Connection Pool.