mysql 连接池断开后自动连接

2023-11-13

MySQL对所有连接的有效时间默认为28800秒,正好8小时,也就是说,如果一个连接8小时没有请求和操作,就会自动断开;但是对于 Hibernate来说,它的连接池并不知道它所管理的连接中是否有被MySQL断开的。如果一个程序要使用数据库连接,而Hibernte的连接池分配 一个已经被MySQL断开了的给程序使用,那么便会出现错误.以下是proxool连接池的解决方案

数据库连接池proxool(0.91),它有两个属性:一个是test-before-use ,还有一个是test-after-use,这两个属性就是在使用前和使用后都要进行对连接的检查,如果连接无效就扔掉再创建一个新的连接,它们的解释如下: 
test-before-use :
If you set this to true then each connection is tested (with whatever is defined in house-keeping-test-sql) before being served. If a connection fails then it is discarded and another one is picked. If all connections fail a new one is built. If that one fails then you get an SQLException saying so.
test-after-use:
If you set this to true then each connection is tested (with whatever is defined in house-keeping-test-sql) after it is closed (that is, returned to the connection pool). If a connection fails then it is discarded. 

 由于项目是spring+ibatis+struts

有关proxool的配置片段如下

web.xml

  <servlet-name>ServletConfigurator</servlet-name>
  <servlet-class>
    org.logicalcobwebs.proxool.configuration.ServletConfigurator
  </servlet-class>
  <init-param>
    <param-name>xmlFile</param-name>
    <param-value>WEB-INF/proxool.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
 proxool.xml放在WEB-INF下

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
  <proxool>
    <alias>dbname </alias>
    <driver-url></driver-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <driver-properties>
      <property name="user" value=""/>
      <property name="password" value=""/>
    </driver-properties>
    <maximum-connection-count>100</maximum-connection-count>
    <minimum-connection-count>10</minimum-connection-count>
    <house-keeping-sleep-time>90000</house-keeping-sleep-time>
    <maximum-new-connections>10</maximum-new-connections>
    <prototype-count>5</prototype-count>
    <test-before-use>true</test-before-use>  关键代码
    <test-after-use>true</test-after-use>
关键代码
    <house-keeping-test-sql>select 1 from dual</house-keeping-test-sql>
关键代码
  </proxool>

</something-else-entirely>

spring的applicationContext.xml

<bean id="datasource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName"
        value="org.logicalcobwebs.proxool.ProxoolDriver" />
    <property name="url" value="proxool.dbname " /> 和proxool.xml中的alias相同
</bean>

测试OK

同理其他连接池的解决方案

DBCP增加以下配置信息:

//set to 'select 1'

validationQuery = "select 1"

//set to 'true'

testWhileIdle = "true"

//some positive integer

timeBetweenEvictionRunsMillis = 3600000 //失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程

//set to something smaller than 'wait_timeout'

minEvictableIdleTimeMillis = 18000000 //大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证

//if you don't mind a hit for every getConnection(), set to "true"

testOnBorrow = "true"

C3P0增加以下配置信息:

//获取connnection时测试是否有效

testConnectionOnCheckin = true

//自动测试的table名称

automaticTestTable=C3P0TestTable

//set to something much less than wait_timeout, prevents connections from going stale

idleConnectionTestPeriod = 18000   //置一段时间后连接池自动测试执行,保持连接开放,

//set to something slightly less than wait_timeout, preventing 'stale' connections from being handed out

maxIdleTime = 25000

//if you can take the performance 'hit', set to "true"

testConnectionOnCheckout = true

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 连接池断开后自动连接 的相关文章

  • 无法连接到 MAMP 上的 phpMyAdmin

    我收到此错误消息 MySQL 说道 无法连接 设置无效 phpMyAdmin 尝试连接 MySQL 服务器 但服务器拒绝连接 您应该检查配置中的主机 用户名和密码 并确保它们与 MySQL 服务器管理员提供的信息相对应 用户和通行证是默认的
  • 如何修复“sessionFactory”或“hibernateTemplate”是必需的问题

    我正在使用 Spring Boot JPA WEB 和 MYSQL 创建我的 Web 应用程序 它总是说 sessionFactory or hibernateTemplate是必需的 我该如何修复它 我已经尝试过的东西 删除了本地 Mav
  • 如何为 MySQL 中的字段或列添加别名?

    我正在尝试做这样的事情 但我收到未知的列错误 SELECT SUM field1 field2 AS col1 col1 field3 AS col3 from core 基本上 我只想使用别名 这样我就不需要执行之前执行的操作 这在mys
  • mysql 如何将 varchar(10) 转换为 TIMESTAMP?

    我已将所有日期存储到数据库中varchar 10 现在我想将它们转换为 TIMESTAMP 当我运行sql时 ALTER TABLE demo3 CHANGE date date TIMESTAMP NOT NULL 它提醒 1292 In
  • SQL Server 2005 是否有与 MySql 的 ENUM 数据类型等效的数据类型?

    我正在开发一个项目 我想在表中存储一些容易枚举的信息 MySql 的枚举数据类型正是我想要的 http dev mysql com doc refman 5 0 en enum html http dev mysql com doc ref
  • 打开新EntityManager后线程锁

    我在使用 Spring JPA 事务时遇到一个非常奇怪的错误 该线程被锁定大约 16 分钟 然后继续 没有任何问题 情况如下 Transactional propagation Propagation REQUIRES NEW public
  • Google Cloud SQL 上的故障转移如何运作?

    我打算将 PHP 应用程序 从 Google Cloud Platform 外部的服务器 连接到 Google Cloud SQL 我想知道如何设计应用程序以正确地对其数据库进行故障转移 根据manual https cloud googl
  • 如何在spring mvc中从控制器名称+操作名称获取映射的URL?

    是否有现有的解决方案可以从 Spring MVC3 中的 控制器名称 操作名称 获取映射的 URL 例如 asp net mvc 或 Rails 中的 UrlHelper 我觉得非常有用 thx 也许 你想要这样的东西 in your Co
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • MYSQL:如何在同一查询中联接两个表,两次引用同一个表

    我有两张桌子 我正在尝试将下面的示例两个表与表 1 引用表 2 两次结合起来 例如 如果我查看表 1 组 2 和成员 7 它应该查找表 2 中的 ID 并给出输出 Group Members Name Name 2 7 Blue Dog T
  • 带有 @RequestBody 的 Spring 多部分文件

    我正在尝试将数据从应用程序上传到 Spring 后端服务 要上传的内容是一个 DataModel 其中包含要创建的对象的数据以及链接到该数据的多个图像 因此我使用这个方法签名 RequestMapping method RequestMet
  • 记录骆驼路线

    我的项目中有几个 Camel 上下文 如果可能的话 我想以逆向工程方式记录路线 因为我们希望保持与上下文相关的文档最新 最好的方法是什么 我们倾向于预先实际设计路线 并使用来自EIP book http www eaipatterns co
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • Oracle SQL PLS-00049:错误的绑定变量

    我收到此错误 这似乎是列拼写问题 然而 我 99 确信我拼写的所有内容都是正确的 但我看不出有任何理由会出现我所犯的错误 这是来源 CREATE OR REPLACE TRIGGER update qoh trigger AFTER INS
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 无法捕获 Spring Batch 的 ItemWriter 中的异常

    我正在编写一个 Spring Batch 流程来将数据集从一个系统迁移到另一个系统 在这种情况下 这就像使用RowMapper实现在传递给查询之前从查询构建对象ItemWriter The ItemWriter称为save我的 DAO 上的
  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是
  • 替换字符串中的多个字符,而不使用任何嵌套替换函数

    我的表中存储了一个方程 我一次获取一个方程 并希望将所有运算符替换为任何其他字符 输入字符串 N 100 6858 6858 N 100 0 2 N 35 运算符或模式 替换字符 输出字符串 N 100 6858 6858 N 100 0

随机推荐

  • 数据库报Connection is read-only. Queries leading to data modification are not allowed

    数据库报Connection is read only Queries leading to data modification are not allowed 具体是某张表的插入操作时报的错误 问题排查过程 这个超过是批量操作发生的 第一
  • Linux-du命令

    du命令 说明 du命令也是查看使用空间的 但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看 还是和df命令有一些区别的 参数 a或 all 显示目录中个别文件的大小 b或 bytes 显示目录或文件大小时 以b
  • EL表达式语言

    引用 http blog 163 com s zhchluo blog static 1501470820075205739439 基本语法 一 EL简介 1 语法结构 expression 2 与 运算符 EL 提供 和 两种运算符来存取
  • 【uniapp】this有时为啥打印的是undefined?(箭头函数修改this)

    博主 初映CY的前说 前端领域 本文核心 uniapp中this指向问题 前言 this大家知道是我们当前项目的实例 我们可以在这个this上面拿到我们原型上的全部数据 这个常用在我们在方法中调用其他方法使用 一 uniapp中this指向
  • Cplex—java集成,idea配置 步骤大全 windows版本

    首先搜索官网cplex下载安装包 本次示例以windows版本 1 双击打开安装包 2 选择简体中文 3 都是默认 修改路径的同学请记得自己的安装路径后面配置环境变量要用 4 这里我已经安装过了中间步骤直接跳过 5 接下来我们需要在java
  • 郑州大学校园网故障问题解决方法

    1 郑州大学校园网学生用户使用指南 可进入郑州大学网络管理中心网站 校园网交流QQ群 群一475137403 群二685466506 微信公众号 郑州大学网络管理中心 一 校园网注册 1 微信扫码并关注 郑州大学网络管理中心 点击进入微信公
  • FFMPEG对于rtp的推流以及VLC验证

    前言 参考资料 https blog csdn net zhoubotong2012 article details 86711097 https blog csdn net zhoubotong2012 article details 8
  • 2021-10-23

    对于算法题 还是要及时地进行总结和收获 不然 对于核心的知识掌握过几天就忘记了 相当于之前付出的努力都打了水漂 多浪费啊 LRU缓存机制 LRU 缓存机制 运用你所掌握的数据结构 设计和实现一个 LRU 最近最少使用 缓存机制 实现 LRU
  • 【转】在java中,OOA是什么?OOD是什么?OOP是什么?

    Object Oriented Analysis 面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后 按照面向对象的思想来分析问题 OOA与结构化分析有较大的区别 OOA所强调的是在系统调查资料的基础上 针对OO方法所需要的素
  • C++ vector容器-44-vector插入和删除以及存取

    本篇继续学习vector容器 前面学习了vector是一个单端数组 也就是说vector的插入和删除 基本上都是在数组的末端进行 本篇要学习的vector插入和删除的方法就能体现这个特点 最后学习vector的存取操作 1 vector的插
  • 论文笔记 2023.5.22

    图像分类的深度卷积神经网络模型综述 图像分类的过程 图像预处理 图像特征提取 人工提取 传统图像分类算法 卷积操作提取 卷积神经网络 使用分类器对图像进行分类 以图像分类为载体 深度卷积神经网络模型主要包括以下四个类别 1 经典深度卷积神经
  • KVM处理器管理和硬件辅助虚拟化技术

    KVM处理器管理和硬件辅助虚拟化技术 Intel 在2006年发布了硬件虚拟化技术 其中支持X86体系结构的称为Intel VT x技术 AMD称为SVM技术 VT x引入了一种新的处理器操作 叫做VMX Virtual MachineEx
  • 基于多项贝叶斯的三分类的情感分析实现

    写在前面 本实验报告是一篇很水的水课的期末大作业 代码 数据集均为原创 意在用最少的代码和最简单的数据集完成老师留下的题目 仅供交流学习使用 禁止直接洗稿嗷 目录 写在前面 一 实验目的 二 实验手段和方法 三 实验内容 四 实验总结 一
  • 量子计算(13)基础知识4:量子测量

    量子测量是量子电路中最后一个元素 在电路中我们经常用到 下面 我将描述量子测量的数学依据以及与量子测量相关的科学定理 目录 一 量子测量 1 理论知识 2 计算基下测量单量子比特 二 两个原理 1 延迟测量原理 2 隐含测量原理 一 量子测
  • Linux下查找文件(日志)中的关键字

    进入到需要查看日志文件的目录 执行以下命令 即可快速定位到想要查看日志内容所在行 1 查看日志 前 n行 cat 或者 tail 日志文件名 head n 数量 示例1 cat api log head n 200 查看log前200行 示
  • three.js加载纹理总是黑色的问题

    什么是纹理 简单理解就是贴在几何体或平面的纹路 就比如一个杯子上的图案 菜鸟 包括我 根据three js教程上代码敲上去之后 纹理没有效果 查阅了半天 总结有以下几个原因 1 图片路径 谷歌浏览器需要在属性中按照如图配置 allow fi
  • SYS_PTRACE容器

    docker run cap add SYS PTRACE security opt seccomp unconfined security opt apparmor unconfined
  • 基于springboot+vue的电影视频订票咨询网站系统-Java项目毕业设计

    项目介绍 随着网络不断的普及发展 影城管理系统依靠网络技术的支持得到了快速的发展 首先要从用户的实际需求出发 通过了解用户的需求开发出具有针对性的首页 电影信息 电影资讯 个人中心 后台管理 在线客服功能 影城管理系统的主要使用者分为管理员
  • 全数字锁相环的研究与设计

    参考文档 http www doc88 com p 4364928925689 html 一篇硕士学位论文 全数字锁相环的研究与设计 https www docin com p 1390623327 html 基于延迟锁定环的TDC的设计
  • mysql 连接池断开后自动连接

    MySQL对所有连接的有效时间默认为28800秒 正好8小时 也就是说 如果一个连接8小时没有请求和操作 就会自动断开 但是对于 Hibernate来说 它的连接池并不知道它所管理的连接中是否有被MySQL断开的 如果一个程序要使用数据库连