gpt4 book ai didi

java - 保持数据库连接始终处于 Activity 状态的正确方法

转载 作者:行者123 更新时间:2023-11-29 11:01:16 25 4
gpt4 key购买 nike

我正在使用 Mybatis 开发后端 Web 服务器来查询 MySQL DB。

网络服务器仅在有限(但不固定)的时间段内发出请求,因此几乎每天我都会收到如下警告日志。

pooled.PooledDataSource:执行 ping 查询“SELECT 1”失败:从服务器成功接收的最后一个数据包是在 51,861,027 毫秒前。最后一次成功发送到服务器的数据包是在 51,861,027 毫秒前。比服务器配置的“wait_timeout”值长。您应该考虑在应用程序中使用之前过期和/或测试连接有效性,增加客户端超时的服务器配置值,或使用 Connector/J 连接属性“autoReconnect=true”来避免此问题。

autoReconnect=true ( Why does autoReconnect=true not seem to work? ) 看起来很接近我的问题,但这不是我所期望的。

我想知道当它处于空闲状态一段时间(可能是 1 小时)时,是否可以通过 ping 来建立连接永不超时

由于 Mybatis 使用连接池,因此很难强制 ping 指定的空闲连接并使其永不超时。

我在 Google 上进行了一些搜索,但看起来入侵 Mybatis 并不容易。

我的问题是:

  1. 是否有针对此问题的任何建议、引用或替代库?

或者

  • 是否存在我不应该尝试保持始终 Activity 连接的原因? (潜在风险?违反最佳实践?等等)
  • 最佳答案

    使用连接池管理器,如C3P0。您将能够配置永久连接。它的工作原理就像您所描述的那样 - 使用 SELEC 1 等示例查询“ping”连接,以便在连接空闲 N 秒(可配置)的情况下使它们保持 Activity 状态。

    这里有一些指导 http://gbif.blogspot.com/2011/08/using-c3p0-with-mybatis.html或这里http://edwin.baculsoft.com/2012/09/connecting-mybatis-orm-to-c3p0-connection-pooling/ 。 C3P0的配置选项可以通过google搜索到。

    关于java - 保持数据库连接始终处于 Activity 状态的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198943/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com