当前位置: 首页 > 面试题库 >

Java + Tomcat,正在断开数据库连接?

颛孙凯定
2023-03-14
问题内容

我有一个tomcat实例设置,但是context.xml在一段时间不活动之后,我在其中配置的数据库连接不断消失。

当我检查日志时,出现以下错误:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收到的最后一个数据包是68051秒前。成功发送到服务器的最后一个数据包是68051秒前,比服务器配置的“
wait_timeout”值长。您应考虑在应用程序中使用连接之前使连接有效性到期和/或对其进行测试,或者增加服务器为客户端超时配置的值,或者使用Connector
/ J连接属性’autoReconnect = true’来避免此问题。

这是context.xml中的配置:

<Resource name="dataSourceName" 
        auth="Container" 
        type="javax.sql.DataSource"
        maxActive="100" 
        maxIdle="30" 
        maxWait="10000" 
        username="username" 
        password="********"
        removeAbandoned = "true"
        logAbandoned = "true"
        driverClassName="com.mysql.jdbc.Driver" 
        url="jdbc:mysql://127.0.0.1:3306/databasename?autoReconnect=true&amp;useEncoding=true&amp;characterEncoding=UTF-8"  />

我正在autoReconnect=true按照错误说的那样使用,但是连接一直在消失。我以前从未见过这种情况。

我还验证了所有数据库连接均已正确关闭。


问题答案:

Tomcat文档

DBCP使用Jakarta-Commons数据库html" target="_blank">连接池。它依赖于Jakarta-Commons组件的数量:

* Jakarta-Commons DBCP
* Jakarta-Commons Collections
* Jakarta-Commons Pool

此属性可以帮助您。

removeAbandonedTimeout="60"

我正在使用相同的连接池内容,并且正在设置这些属性以防止未通过tomcat配置该内容。但是,如果第一件事不起作用,请尝试这些。

testWhileIdle=true
timeBetweenEvictionRunsMillis=300000


 类似资料:
  • 本章介绍如何从OrientDB命令行断开与特定数据库的连接。 它关闭了当前打开的数据库。 以下语句是Disconnect命令的基本语法。 注 - 只有在连接到特定数据库后才能使用此命令,并且只会关闭当前运行的数据库。 示例 在这个例子中,我们将使用在前一章中创建的名为的数据库。 我们将从数据库断开连接。 可以使用以下命令断开数据库连接。 如果它成功断开连接,将获得以下输出 -

  • 我有一个几乎功能齐全的实时数据库存在系统,如这里所述,但我遇到了一些问题。似乎即使在不久前断开连接后,人们仍然保持在线状态。我不知道为什么,但我暂时向未经身份验证的请求开放了我的安全规则,但无济于事。这可能是由于此处描述的错误。 如果问题是梯子,那么避免这个问题的正确JavaScript实现是什么?每 60 分钟重新创建一次“断开连接”侦听器是一个好的解决方案吗?作为参考,我使用的代码如下所示:

  • 问题内容: 我正在尝试创建我的第一个连接池。我正在使用Tomcat 7和MySQL DB创建Java Web应用程序,并且我想创建尽可能简单的连接池。我看了几本教程,但对我来说还不是很清楚,所以我想请您确认我是否做得很好。 我已经编写了以下类作为连接池管理器: 我不知道 静态 属性或 同步的 。 而且我不确定池的“客户端”类。我了解他们只需使用 最后使用 就是这样吗?而且,有没有更简单或更完善的方

  • 本文向大家介绍java连接mysql数据库 java连接sql server数据库,包括了java连接mysql数据库 java连接sql server数据库的使用技巧和注意事项,需要的朋友参考一下 在java的应用中,我们经常会对数据库进行必要的操作,下来我们就了解一下如何用java连接mysql数据库 以及java连接sql server数据库 一、mysql 二、sql server 以上就

  • 我们有一个使用Spring和Hibernate用Java8编写的应用程序。 我们在prod和dev环境中都使用MySQL数据库。该数据库每天使用一次,流程从晚上11点开始。有时甚至没有人使用prod数据库,所以在8个小时的不活动之后,MySQL数据库正在断开连接。当流程开始时,我们会得到一个错误: 然后,当有人在最初的失败后手动启动该过程时,一切都正常了。 似乎第一次连接(自动)尝试以某种方式触发

  • MySQL长连接 MySQL短连接每次请求操作数据库都需要建立与MySQL服务器建立TCP连接,这是需要时间开销的。TCP连接需要3次网络通信。这样就增加了一定的延时和额外的IO消耗。请求结束后会关闭MySQL连接,还会发生3/4次网络通信。 close操作不会增加响应延时,原因是close后是由操作系统自动进行通信的,应用程序感知不到 长连接就可以避免每次请求都创建连接的开销,节省了时间和IO消