使用'debugUnreturnedConnectionStackTraces'调试连接丢失

Npa*_*Npa 6 java spring hibernate connection-pooling c3p0

我正在努力解决我正在进行的项目的连接超时问题.我们使用c3p0来管理连接池和hibernate作为orm工具.我们也用春天.

要查找是否有任何未返回的连接,我已在我的c3p0配置中将debugUnreturnedConnectionStackTraces设置为true(不在c3p0属性中).

还有什么我需要做的.我是否还要向lod4j.properties添加任何内容,还是仅将debugUnreturnedConnectionStackTraces设置为true?

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

谢谢您的帮助

Ste*_*man 11

对Corey的答案进行了扩展:

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

通常人们会从所有记录器中记录INFO级别以上的任何内容,因此这些堆栈跟踪只会出现在您的日志中.但是,如果您没有看到它们,请检查您的日志记录配置,以确保不会过滤来自该记录器的INFO消息.

请注意,如果未设置unreturnedConnectionTimeout,则debugUnreturnedConnectionStackTraces将执行NOTHING.

看到

http://www.mchange.com/projects/c3p0/#unreturnedConnectionTimeout

http://www.mchange.com/projects/c3p0/#debugUnreturnedConnectionStackTraces

我希望这有帮助!

ps无论你如何设置这些属性都没关系,只要它们被正确设置.c3p0在池启动时转储INFO池配置; 检查您的日志以确保无论您是否尝试设置参数,都可以获得预期的配置.或者,您可以使用JMX检查参数.


Cor*_*ott 3

就个人而言,我通常将以下两行添加到我的 hibernate.cfg.xml 中

<property name="hibernate.c3p0.unreturnedConnectionTimeout">60</property>
<property name="hibernate.c3p0.debugUnreturnedConnectionStackTraces">true</property>
Run Code Online (Sandbox Code Playgroud)

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