Java 使用'调试连接丢失;调试未返回的连接StackTraces';

Java 使用'调试连接丢失;调试未返回的连接StackTraces';,java,spring,hibernate,connection-pooling,c3p0,Java,Spring,Hibernate,Connection Pooling,C3p0,我正在为我正在进行的一个项目解决连接超时问题。我们使用c3p0管理连接池,并使用hibernate作为orm工具。我们也使用弹簧 为了查找是否存在任何未返回的连接,我在c3p0配置中将DebugUnreturnedConnectionsStackTraces设置为true(而不是在c3p0属性中) 还有什么我需要做的吗。我是否还必须向lod4j.properties添加任何内容,或者只需将debugUnreturnedConnectionStackTraces设置为true即可 另外,我是否应该

我正在为我正在进行的一个项目解决连接超时问题。我们使用c3p0管理连接池,并使用hibernate作为orm工具。我们也使用弹簧

为了查找是否存在任何未返回的连接,我在c3p0配置中将DebugUnreturnedConnectionsStackTraces设置为true(而不是在c3p0属性中)

还有什么我需要做的吗。我是否还必须向lod4j.properties添加任何内容,或者只需将debugUnreturnedConnectionStackTraces设置为true即可

另外,我是否应该在c3p0属性中将debugUnreturnedConnectionStackTraces设置为true


感谢您的帮助

我个人通常会在hibernate.cfg.xml中添加以下两行

<property name="hibernate.c3p0.unreturnedConnectionTimeout">60</property>
<property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces">true</property>
60
真的

我相信超时的默认值是0,我不确定它应该如何工作。

对Corey的答案进行一点扩展:

如果unreturnedConnectionTimeout为正值且DebuggeUnreturnedConnectionsTackTraces设置为true,则记录器“com.mchange.v2.resourcepool.BasicResourcePool”将在信息级别记录生成未返回异常的堆栈跟踪

通常人们会从所有的日志记录者那里记录任何高于信息级别的内容,所以这些堆栈跟踪只会出现在您的日志中。但如果您没有看到它们,请检查您的日志配置,以确保来自该日志记录器的信息中的消息未被过滤

请注意,如果未同时设置unreturnedConnectionTimeout,则DebuggeUnreturnedConnectionsTackTraces将不起任何作用

我希望这有帮助


p、 不管你如何设置这些属性,只要它们设置正确。c3p0在池启动信息中转储池配置;检查日志,确保无论您如何尝试设置参数,您都具有所需的配置。或者,您可以使用JMX检查参数。

谢谢scott。但是,如果我们将'debugUnreturnedConnectionStackTraces'设置为true,或者我也应该对log4j.properties进行任何更改,这就足够了吗。“debugUnreturnedConnectionStackTraces”将在哪里记录堆栈跟踪。它会登录到应用服务器的日志中吗?我不使用log4j,但我希望您需要将日志级别设置为debug。是的,它应该在应用服务器日志中结束。日志级别信息是这里的关键信息。我只记录警告和以上。当catalina.out中没有输出时,请检查日志记录级别