Notions de base - Dépannage Hibernate / Pool de connexions JDBC Problème

Ce qui est de Hibernate responsabilité en ce qui concerne les connexions de base de données qu'il obtient à partir d'une connexion sous-jacente de la piscine. Est-il tester pour voir si une connexion est fermée avant de l'utiliser? et si oui, obtenir une autre connexion de la piscine?

J'ai compris l'erreur et de confirmation, les informations ci-dessous. Toute idée d'où je peux commencer à dépanner ce serait très utile. Et tous les conseils sur le pilote SQL Server paramètres que nous utilisons.

de la Catalina journal:

04-Nov-2010 21:54:52.691 AVERTISSEMENT org.apache.tomcat.jdbc.piscine.ConnectionPool.abandonner la Connexion a été abandonné PooledConnection[ConnectionID:8]:java.lang.Exception 
au org.apache.tomcat.jdbc.piscine.ConnectionPool.getThreadDump(ConnectionPool.java:926) 
au org.apache.tomcat.jdbc.piscine.ConnectionPool.borrowConnection(ConnectionPool.java:681) 
au org.apache.tomcat.jdbc.piscine.ConnectionPool.borrowConnection(ConnectionPool.java:545) 
au org.apache.tomcat.jdbc.piscine.ConnectionPool.getConnection(ConnectionPool.java:166) 
au org.apache.tomcat.jdbc.piscine.DataSourceProxy.getConnection(DataSourceProxy.java:106) 

de notre journal d'application:

2010-11-04 21:54:52,705 [tomcat-http--18] AVERTIR util.JDBCExceptionReporter - Erreur SQL: 0, SQLState: 08S01 
2010-11-04 21:54:52,707 [tomcat-http--18] ERREUR util.JDBCExceptionReporter - Socket fermée 
2010-11-04 21:54:52,708 [tomcat-http--18] ERREUR de transaction.JDBCTransaction - JDBC restauration a échoué 
java.sql.SQLException: la Connexion a déjà été fermé. 
au org.apache.tomcat.jdbc.piscine.ProxyConnection.invoke(ProxyConnection.java:112) 
au org.apache.tomcat.jdbc.piscine.JdbcInterceptor.invoke(JdbcInterceptor.java:94) 
au org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:71) 
au org.apache.tomcat.jdbc.piscine.JdbcInterceptor.invoke(JdbcInterceptor.java:94) 
au org.apache.tomcat.jdbc.piscine.l'intercepteur.ConnectionState.invoke(ConnectionState.java:132) 
à $Proxy38.rollback(Source Inconnue) 
au org.mise en veille prolongée.des transactions.JDBCTransaction.rollbackAndResetAutoCommit(JDBCTransaction.java:217) 
au org.mise en veille prolongée.des transactions.JDBCTransaction.rollback(JDBCTransaction.java:196) 
au org.springframework.orm.hibernate3.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:676) 
au org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:845) 
au org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:822) 
au org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSupport.java:412) 
au org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:111) 
au org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
au org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625) 

La configuration:

<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"/>`

OriginalL'auteur BuddyJoe | 2010-11-05