基础-对Hibernate / JDBC连接池问题进行故障排除

Hibernate从基础连接池获得的数据库连接的责任是什么。它在连接使用之前是否进行测试以查看连接是否已关闭?如果是这样,从池中获得另一个连接?

我在下面添加了错误和确认信息。我可以从哪里开始解决此问题的任何想法将非常有帮助。以及有关我们正在使用的SQL Server驱动程序设置的任何建议。

2010年11月4日21:54:52.691警告org.apache.tomcat.jdbc.pool.ConnectionPool.abandon连接已被放弃PooledConnection [ConnectionID:8]:java.lang.Exception

在org.apache.tomcat.jdbc.pool.ConnectionPool.getThreadDump(ConnectionPool.java:926)

在org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:681)

在org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:545)

在org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:166)

在org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:106)

2010-11-04 21:54:52,705 [tomcat-http--18] WARN util.JDBCExceptionReporter-SQL错误:0,SQLState:08S01

2010-11-04 21:54:52,707 [tomcat-http--18]错误util.JDBCExceptionReporter-套接字已关闭

2010-11-04 21:54:52,708 [tomcat-http--18]错误transaction.JDBCTransaction-JDBC回滚失败

java.sql.SQLException:连接已关闭。

在org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:112)

在org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94)

在org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71)

在org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:94)

在org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:132)

在$ Proxy38.rollback(未知来源)

在org.hibernate.transaction.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:217)

在org.hibernate.transaction.JDBCTransaction.rollback(JDBCTransaction.java:196)

在org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:676)

在org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845)

在org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822)

在org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:412)

在org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:111)

在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

在org.springframework.aop.framework.Cglib2AopProxy $ DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)

<Resource defaultAutoCommit="false" defaultReadOnly="false"

defaultTransactionIsolation="SERIALIZABLE"

driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

fairQueue="false" initialSize="10"

jdbcInterceptors="ConnectionState;StatementFinalizer"

jmxEnabled="true" logAbandoned="true" maxActive="100"

maxIdle="10" maxWait="30000"

minEvictableIdleTimeMillis="10000" minIdle="10"

name="com.ourcompany.ap.shoppingcart/datasource"

password="somePassword" removeAbandoned="true"

removeAbandonedTimeout="60" testOnBorrow="true"

testOnReturn="false" testWhileIdle="false"

timeBetweenEvictionRunsMillis="5000"

type="javax.sql.DataSource"

url="jdbc:sqlserver://approd\approd;databaseName=prod"

useEquals="false" username="AccessPointNet"

validationInterval="30000" validationQuery="SELECT 1"/>`

回答:

Hibernate从基础连接池获得的数据库连接的责任是什么。

不多,当Session关闭时释放它。

它在连接使用之前是否进行测试以查看连接是否已关闭?如果是这样,从池中获得另一个连接?

不,Hibernate不会,如果需要,检查连接的有效性是连接池的责任。

我在下面添加了错误和确认信息。我可以从哪里开始解决此问题的任何想法将非常有帮助。

您究竟在执行哪种流程?长时间的交易?是否超时?什么是 Caused by: 说什么?关于跟踪:

2010-11-04 21:54:52,705 [tomcat-http--18] WARN util.JDBCExceptionReporter-SQL错误:0,SQLState:08S01 

2010-11-04 21:54:52,707 [tomcat-http--18]错误util.JDBCExceptionReporter-套接字已关闭

2010-11-04 21:54:52,708 [tomcat-http--18]错误transaction.JDBCTransaction-JDBC回滚失败java.sql.SQLException:连接已关闭。

您可以确定性地重现它吗?有网络问题吗?

以及有关我们正在使用的SQL Server驱动程序设置的任何建议。

我在下面添加了有关Tomcat和连接池配置的大量资源。虽然不特定于SQL Server。

资源资源

  • 配置jdbc-pool以实现高并发性

以上是 基础-对Hibernate / JDBC连接池问题进行故障排除 的全部内容, 来源链接: utcz.com/qa/404481.html

回到顶部