gpt4 book ai didi

java - Hibernate/C3P0 没有正确关闭 MySQL 连接(在 mysql.err 上终止连接)

转载 作者:行者123 更新时间:2023-11-30 23:47:02 26 4
gpt4 key购买 nike

我有一个独立的 Java 应用程序,它使用 Hibernate 来管理 SQL 连接。我使用 MySQL 数据库,并确保在 main() 方法退出时关闭所有 session 。

我的代码是这样的:

public static void main(String[] args) {

logger.info("Starting app");
App instance = new App();
try {
instance.run();
} catch (Exception e) {
logger.error("failed to complete run", e);
} finally {
HibernateUtil.closeCurrentSession();
}
logger.info("Finished run");
}

现在,每次这个主要方法退出时,我都会在我的 sql 错误日志中看到一条日志:[Warning] Aborted connection 41533470 to db: 'user' user: 'some_user' host: 'some_ip_address_here' (Got读取通信数据包时出错)

这是否意味着MySQL手动杀死了它?如果是这样,我该如何优雅地关闭我的 MySQL 连接?如果我能正确地记忆起我的 Hibernate,关闭 session 只是将它们放回 session 池中......我不确定如何完全告诉 Hibernate 释放它与 MySQL 的连接。

编辑:我正在为此使用 C3P0 - 抱歉忘记提早了。我的连接确实关闭了,但这只是我在 mysql.err 日志中收到 [Warning] 错误。我不喜欢看到这些类型的警告,因为显然有问题。

最佳答案

Apparently, this is actually a bug from Hibernate.

我在我的 HibernateUtil 中添加了另一个关闭 C3P0ConnectionProvider 的方法,以便静态访问。

SessionFactoryImpl impl = (SessionFactoryImpl) sessionFactory;
C3P0ConnectionProvider provider = (C3P0ConnectionProvider) impl.getConnectionProvider();
provider.close();

在那之后,我再也没有看到那些讨厌的警告。

关于java - Hibernate/C3P0 没有正确关闭 MySQL 连接(在 mysql.err 上终止连接),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32407218/

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