2012-04-03 2 views
4

Я использовал Spring DATA JPA в своем приложении, которое является оболочкой по спящему. Хотя взаимодействие с базой данных в один момент я получаю expectionИсключение в спящем режиме «Не удается освободить соединение»?

Caused by: org.hibernate.exception.GenericJDBCException: Cannot release connection 
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) 
    at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:478) 
    at org.hibernate.jdbc.ConnectionManager.aggressiveRelease(ConnectionManager.java:429) 
    at org.hibernate.jdbc.ConnectionManager.afterStatement(ConnectionManager.java:304) 
    at org.hibernate.jdbc.AbstractBatcher.closePreparedStatement(AbstractBatcher.java:572) 
    at org.hibernate.jdbc.AbstractBatcher.closeStatement(AbstractBatcher.java:291) 
    at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:307) 
    at org.hibernate.jdbc.AbstractBatcher.closeQueryStatement(AbstractBatcher.java:234) 
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1967) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:802) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) 
    at org.hibernate.loader.Loader.doList(Loader.java:2533) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) 
    at org.hibernate.loader.Loader.list(Loader.java:2271) 
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452) 
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363) 
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) 
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268) 
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) 
    at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:246) 

обработку соединения в спящем режиме является внутренней обработкой мы явно не освободить или закрыть соединение.

Я не могу понять, как решить эту проблему ..

+0

Я не думаю, что это проблема, связанная Spring Data. вы не возражаете, добавив конфигурации источника данных или вашей общей инфраструктуры JPA se tup? –

+0

Вот моя конфигурация базы данных: <Ресурс auth = "Контейнер" defaultAutoCommit = "false" defaultTransactionIsolation = "2" driverClassName = "com.mysql.jdbc.Driver" maxActive = "100" maxIdle = "30" maxWait = "10000" name = "jdbc/projectDB" password = "password" type = "javax.sql.DataSource" url = "jdbc: mysql: // localhost: 3306/database" имя пользователя = "пользователь" validationQuery = "SELECT 1 from dual "/> – dhroove

ответ

3

Наконец я получил решение. Я решил эту проблему, установив дополнительную конфигурацию для базы данных.

Вот подробная ссылка: http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

В двух словах ("testOnBorrow», „testOnReturn“, „testWhileIdle“) эти параметры, которые я играл с, чтобы удалить выше исключение Над исключением шоу в некоторой точке. времени наш объект подключения к базе данных получить аннулирован какой-то образом. Но эти настройки помогают нам держать проверку на нашем подключении к базе данных.

Приветствие :)

+0

Вот еще одна статья, которую я нашел полезной при расследовании проблемы: http://info.michael-simons.eu/2011/11/21/fixing-hibernate-cannot-release-connection-exception-using-dbcp и-MySQL / – user1242321

Смежные вопросы