【问题标题】:Derby/JDBC connection lifetime (or Idle Timeout)Derby/JDBC 连接生命周期(或空闲超时)
【发布时间】:2012-07-18 16:24:00
【问题描述】:

使用 JDBC 连接到 Derby 数据库,一段时间后,Derby 或 JDBC 会自动关闭连接。 (这可以称为“连接生命周期”值或超时值)。

在哪里可以找到超时值?是 Derby 还是 JDBC 关闭了连接?它是一个“空闲超时”值吗?所以,如果该连接上有活动,Derby 或 JDBC 是否会更新以在 (LastActivity + IdleTimeoutValue) 时关闭连接?

我看了一堆页面,包括 Connection timeout for DriverManager getConnection How to reestablish a JDBC connection after a timeout?

【问题讨论】:

    标签: jdbc timeout connection derby lifetime


    【解决方案1】:

    据我所知,Derby 和 JDBC 都没有任何自动超时。

    以下是 Derby JDBC 连接的可配置行为: http://db.apache.org/derby/docs/10.8/ref/rrefattrib24612.html

    我认为 Derby 不会关闭你的连接。

    我怀疑您的网络防火墙、VPN 或其他一些设备正在关闭您明显空闲的 TCP/IP 连接。

    尝试与您的 IT 人员一起检查您的网络配置。

    【讨论】:

    • 如果 Derby 和 JDBC 由于不活动而关闭连接,则要么两个链接中的信息(在原始帖子/问题中)不正确,要么我误解了他们在说什么。有什么想法吗?
    • 这可能会导致另一个区域,TCP keepalive;如果这是问题所在,要么在操作系统级别设置它,要么以某种方式告诉 Derby 使用 keepalive(它不在 derby 可配置行为文档中)。我也使用 ActiveMq,所以必须告诉 ActiveMq 的套接字也保持活动状态。如果有关于如何针对此类问题进行配置和编程的文章,我想阅读它!
    • 更准确地说,我的意思是,Derby 的 JDBC 实现不会因为超时而关闭空闲的连接,而 JDBC 不需要这样的特性。实际上,正如您在原始问题中所链接的那样,其他 JDBC 实现可能会提供这样的功能。同样,您应该让您的 IT 人员帮助启用网络层诊断,以找出您的空闲连接被关闭的原因,因为我不相信是 Derby 做的。
    • 您可能是对的,与计算机的远程连接也断开了,我们必须重新连接。我们网络中的某些东西可能会定期破坏所有连接(我怀疑是 DHCP 租约)。当我了解更多信息时,我会更新此评论。我怀疑 WGR614v10 netgear 路由器,尽管网络中还有其他交换机值得怀疑。
    • 低技术测试:我们在作业运行时关闭网络开关 30 秒,得到相同的结果。更多更新即将到来。
    猜你喜欢
    • 2014-04-15
    • 2017-01-07
    • 2015-12-25
    • 2020-04-29
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多