大家好我有一个使用Hibernate检索数据库中数据的Web应用程序。在服务器端,一些例外定期出现。以下是例外日志。
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
有人可以帮我解决这个问题吗?非常感谢!
答案 0 :(得分:27)
这是在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
中可能的最低级别。)
要将其包装起来:忽略并调整您的日志记录级别以跳过这些。
答案 1 :(得分:0)
我发现了错误的位置:我认为当某个对象故意调用时会出现
com.mchange.v2.c3p0.ComboPooledDataSource.close
我在春天配置了这个课程。当我把destroy-method =“close”时出现错误。
显然,我已将其删除,问题现已解决。
答案 2 :(得分:0)
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-->
}