Странная ошибка: ЗАКРЫТЬ КЛИЕНТОМ STACK TRACE - PullRequest
22 голосов
/ 06 декабря 2011

Привет всем, у меня есть веб-приложение, которое использует Hibernate для извлечения данных из базы данных. И на стороне сервера некоторые исключения выходят через регулярные промежутки времени. Ниже приведены журналы исключений.

    16:04:22,227 DEBUG NewPooledConnection:491 - com.mchange.v2.c3p0.impl.NewPooledConnection@ef46613 closed by a client.
    java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE
        at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:491)
        at com.mchange.v2.c3p0.impl.NewPooledConnection.close(NewPooledConnection.java:191)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.destroyResource(C3P0PooledConnectionPool.java:470)
        at com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.run(BasicResourcePool.java:964)
        at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    16:09:42,310 DEBUG C3P0PooledConnectionPool:476 - Successfully destroyed PooledConnection: com.mchange.v2.c3p0.impl.NewPooledConnection@32ef0763
    16:09:42,310 DEBUG BasicResourcePool:967 - Successfully destroyed resource: com.mchange.v2.c3p0.impl.NewPooledConnection@32ef0763
    16:09:42,310 DEBUG GooGooStatementCache:319 - ENTER METHOD: closeAll( org.postgresql.jdbc4.Jdbc4Connection@42df0af8 )! -- num_connections: 1

Может ли кто-нибудь помочь мне с этой проблемой? Большое спасибо!

Ответы [ 3 ]

27 голосов
/ 06 декабря 2011

Это код, который запускает этот оператор журнала в C3P0:

if ( logger.isLoggable( MLevel.FINEST ) )
  logger.log( MLevel.FINEST, this + " closed by a client.", 
            new Exception("DEBUG -- CLOSE BY CLIENT STACK TRACE") );

Обратите внимание, что:

  1. Это не исключение, new Exception используется просто для показа пути выполнения в целях отладки.

  2. И да, это только отладочное сообщение (на самом деле, FINEST - это самый низкий возможный уровень в java.util.logging).

Чтобы обернуть это: игнорируйте и настройте уровни ведения журнала, чтобы пропустить их.

0 голосов
/ 07 марта 2014
Hibernate connection close work like this way so you no need remove the destroy-method="close".

public synchronized void close() throws SQLException
{
  close(null);
}

private void close(Throwable cause) throws SQLException
{
<--statement-->
if(cause == null)
{
 invalidatingException = NORMAL_CLOSE_PLACEHOLDER;
 if(logger.isLoggable(MLevel.FINEST))
 logger.log(MLevel.FINEST, this + " closed by a client.", new Exception("DEBUG -- CLOSE BY CLIENT STACK TRACE"));
<--statement-->
}
0 голосов
/ 06 июня 2013

Я нашел, где ошибка: я думаю, что она появляется, когда какой-то объект вызывает намеренно

com.mchange.v2.c3p0.ComboPooledDataSource.close

Я настроил этот класс весной. Когда я ставлю destroy-method = "close", появляется ошибка.

Очевидно, я удалил его, и теперь проблема решена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...