【问题标题】:what does 'testConnectionOnCheckin' in c3p0 mean?c3p0 中的“testConnectionOnCheckin”是什么意思?
【发布时间】:2012-10-09 21:31:51
【问题描述】:

我一直在尝试浏览 c3p0 文档,但无法理解“testConnectionOnCheckin”属性。

文档说 - “连接在被包含在池中之前已经过测试”。

此属性是否仅适用于 c3p0 创建的新连接在包含在池中之前经过测试?检查新连接有什么意义?它们通常不是有效的吗?

另外几天我的应用程序日志显示如下:

[managed:2 unused:2 excluded:1]

我的应用程序为一个特定连接抛出异常,我认为该连接是“排除”的。 “排除”连接是否计入池中,c3p0 是否可以在不检查有效性的情况下将其移交给应用程序?如果不是,那么设置“testConnectionOnCheckin”是否会在我的应用程序使用此排除连接之前测试它的有效性?

我为太多问题道歉,但只是我很困惑。

谢谢 日腾德拉

【问题讨论】:

    标签: java hibernate c3p0


    【解决方案1】:

    testConnectionOnCheckin 在连接被客户端签入后[即通过 Connection.close()] 测试连接,但在它们重新集成到连接池之前。我不确定您正在查看哪些文档,但请参阅

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

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

    我通常建议结合使用 idleConnectionTestPeriod 和 testConnectionsOnCheckIn(以及快速的首选测试查询)来测试连接。

    “排除的”连接是客户端当前正在使用的连接,但 c3p0 注意到它有故障。 c3p0 将这些连接标记为在客户端签入时被销毁而不是重新集成到池中。

    我希望这会有所帮助!

    【讨论】:

    • 谢谢史蒂夫。在 out 应用程序中,我们使用 sessionFactory、getCurrentTransaction 进行编码、启动事务、执行操作和提交事务。提交事务时是否调用了connection.close?
    • 我对冬眠并不那么强,所以把这个和一粒盐一起吃吧。但我认为这是一个映射到连接的休眠会话。所以从连接池的角度来看,最安全的选择是关闭你的会话。但是,在某些设置下,hibernate 会自动将“物理”会话的生命周期映射到事务,同时保持运行时间更长的逻辑“当前会话”。这应该没问题,因为物理连接应该只在事务中存在。请参阅community.jboss.org/wiki/SessionsAndTransactions 以验证您的会话管理策略。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 2017-06-11
    • 2018-03-05
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    相关资源
    最近更新 更多