Странная ошибка: CLOSENT STACK TRACE
Привет всем У меня есть веб-приложение, использующее Hibernate для извлечения данных в базе данных. И на стороне сервера некоторые execeptions выходят на регулярной основе. Ниже приведены журналы исключений.
16:04:22,227 DEBUG NewPooledConnection:491 - [email protected] 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: [email protected]
16:09:42,310 DEBUG BasicResourcePool:967 - Successfully destroyed resource: [email protected]
16:09:42,310 DEBUG GooGooStatementCache:319 - ENTER METHOD: closeAll( [email protected] )! -- num_connections: 1
Может ли кто-нибудь помочь мне с этой проблемой? Большое спасибо!
Ответы
Ответ 1
Это код, который запускает этот оператор журнала в C3P0:
if ( logger.isLoggable( MLevel.FINEST ) )
logger.log( MLevel.FINEST, this + " closed by a client.",
new Exception("DEBUG -- CLOSE BY CLIENT STACK TRACE") );
Обратите внимание, что:
-
Это не исключение, new Exception
используется просто для отображения пути выполнения для целей отладки.
-
И да, это только отладочное сообщение (фактически, FINEST
- самый низкий возможный уровень в java.util.logging
).
Чтобы обернуть это: проигнорируйте и настройте уровни ведения журнала, чтобы пропустить их.
Ответ 2
Я обнаружил, где ошибка: я думаю, что она появляется, когда какой-то объект вызывает намеренно
com.mchange.v2.c3p0.ComboPooledDataSource.close
Я настроил этот класс в spring. Когда я помещаю destroy-method = "close", появляется ошибка.
Очевидно, я удалил его, и проблема теперь решена.
Ответ 3
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-->
}