gpt4 book ai didi

java.lang.IllegalStateException : Pool not open

转载 作者:行者123 更新时间:2023-12-01 06:17:56 26 4
gpt4 key购买 nike

处理大型数据库事务时我遇到了以下问题:

java.lang.IllegalStateException: Pool not open
at org.apache.commons.pool.BaseObjectPool.assertOpen(BaseObjectPool.java:78)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:722)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:95)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:119)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:57)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1326)
at com.indictranstech.mbmc.common.utils.AuditTrailHibernateListener.onPostInsert(AuditTrailHibernateListener.java:133)
at org.hibernate.action.EntityInsertAction.postInsert(EntityInsertAction.java:131)
at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:110)
at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:656)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:375)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy53.merge(Unknown Source)

数据库连接由 HibernateTemplate 管理。而事务则由Spring事务管理来管理。数据库是PostgreSQL。

当有 5 到 10 个事务时,相同的代码可以正常工作。

最佳答案

您在项目中使用过这样的代码吗?

Session session = hibernateTemplate.getSessionFactory().openSession();

当你使用openSession()时,spring不会自动关闭它,你应该这样使用它

HttpSession session = null;
session = hibernateTemplate.getSessionFactory().getCurrentSession();
if(null == session) {
session = hibernateTemplate.getSessionFactory().openSession();
}

您还可以使用 hibernate.executeFind(new HibernateCallback(){ ... }) 来避免此问题

关于java.lang.IllegalStateException : Pool not open,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com