A JDBC pool connection leak was detected.

2008年03月15日

f环境:WLsp3,hibernate3.1.3,spring1.2.7 

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
 at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6458)
 at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
 at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
 at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3661)
 at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2630)
 at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
 at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
Caused by: org.springframework.transaction.CannotCreateTransactionException:

Could not open Hibernate Session for transaction; nested exception is

org.hibernate.exception.GenericJDBCException: Cannot open connection
 at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:548)
 at org.springframework.transaction.support.AbstractPlatformTransactionManager.

getTransaction(AbstractPlatformTransactionManager.java:282)
 at org.springframework.transaction.interceptor.TransactionAspectSupport.

createTransactionIfNecessary(TransactionAspectSupport.java:225)
 at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:89)
 at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
 at org.springframework.aop.framework.

Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:643)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.apache.tapestry.listener.ListenerMap.invokeTargetMethod(ListenerMap.java:257)
 ... 30 more
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection
 at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:91)
 at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:79)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
 at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
 at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:307)
 at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:109)
 at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:134)
 at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
 at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1236)
 at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:515)
 ... 43 more
Caused by: weblogic.jdbc.extensions.PoolLimitSQLException: weblogic.common.resourcepool.ResourceLimitException:

 No resources currently available in pool cp_ffp to allocate to applications, please increase the size of the pool and retry..
 at weblogic.jdbc.common.internal.JDBCUtil.wrapAndThrowResourceException(JDBCUtil.java:203)
 at weblogic.jdbc.pool.Driver.connect(Driver.java:161)
 at weblogic.jdbc.jts.Driver.getNonTxConnection(Driver.java:507)
 at weblogic.jdbc.jts.Driver.connect(Driver.java:139)
 at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305)
 at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider

.getConnection(LocalDataSourceConnectionProvider.java:80)
 at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:304)
 ... 48 more
<2008-3-11 上午10时30分42秒 GMT> <Warning> <JDBC> <BEA-001074> <A JDBC pool connection leak was detected.

A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close()

and then was disposed by the garbage collector and returned to the connection pool. The following stack

trace at create shows where the leaked connection was created. 

 [Null exception passed, creating stack trace for offending caller]
 at weblogic.utils.StackTraceUtils.throwable2StackTrace(StackTraceUtils.java:28)
 at weblogic.jdbc.wrapper.PoolConnection.finalizeInternal(PoolConnection.java:84)
 at weblogic.jdbc.wrapper.PoolConnection_com_sybase_jdbc2_jdbc_SybConnection.finalize(Unknown Source)
 at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
 at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
 at java.lang.ref.Finalizer.access$100(Unknown Source)
 at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

 

http://forums.bea.com/thread.jspa?threadID=200035670&start=105

据查此错误是由于连接池内存泄露导致,更换到spring2.0.8错误消失