这是因为mysql 长时间没连接了 就会自动断开服务。

解决办法

1、首先,下载必须的jar包

dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ dbcp /

pool包,目前版本是1.3:http://jakarta.apache.org/commons/pool/,

如果下载的pool包是1.2的版本,还要下载common-collections包:http://jakarta.apache.org/commons/collections/

在建立我们自己的数据库连接池时,可以使用xml文件来传入需要的参数,这里只使用hard code的方式来简单介绍,所有需要我们自己写的代码很少,只要建立一个文件如下:

import org.apache.commons. dbcp .BasicDataSource;

import org.apache.commons. dbcp .BasicDataSourceFactory;

import java.sql.SQLException;

import java.sql.Connection;

import java.util.Properties;

public class ConnectionSource {

private static BasicDataSource dataSource = null;

public ConnectionSource() {

}

public static void init() {

if (dataSource != null) {

try {

dataSource.close();

} catch (Exception e) {

//

}

dataSource = null;

}

try {

Properties p = new Properties();

p.setProperty("driverClassName", "oracle.jdbc.driver.OracleDriver");

p.setProperty("url", "jdbc:oracle:thin:@192.168.0.1:1521:testDB");

p.setProperty("password", "scott");

p.setProperty("username", "tiger");

p.setProperty("maxActive", "30");

p.setProperty("maxIdle", "10");

p.setProperty("maxWait", "1000");

p.setProperty(" removeAbandoned ", "false");

p.setProperty("removeAbandonedTimeout", "120");

p.setProperty("testOnBorrow", "true");

p.setProperty("logAbandoned", "true");

dataSource = (BasicDataSource) BasicDataSourceFactory.createDataSource(p);

} catch (Exception e) {

//

}

}

public static synchronized Connection getConnection() throws SQLException {

if (dataSource == null) {

init();

}

Connection conn = null;

if (dataSource != null) {

conn = dataSource.getConnection();

}

return conn;

}

}

接下来,在我们的应用中,只要简单地使用ConnectionSource.getConnection()就可以取得连接池中的数据库连接,享受数 据库连接带给我们的好处了。当我们使用完取得的数据库连接后,只要简单地使用connection.close()就可把此连接返回到连接池中,至于为什 么不是直接关闭此连接,而是返回给连接池,这是因为 dbcp 使用委派模型来实现Connection接口了。

在使用Properties来创建BasicDataSource时,有很多参数可以设置,比较重要的还有:

testOnBorrow、testOnReturn、testWhileIdle,他们的意思是当是取得连接、返回连接或连接空闲时是否进行有效性 验证(即是否还和数据库连通的),默认都为false。所以当数据库连接因为某种原因断掉后,再从连接池中取得的连接,实际上可能是无效的连接了,所以, 为了确保取得的连接是有效的,可以把把这些属性设为true。当进行校验时,需要另一个参数:validationQuery,对oracle来说,可以 是:SELECT COUNT(*) FROM DUAL,实际上就是个简单的SQL语句,验证时,就是把这个SQL语句在数据库上跑一下而已,如果连接正常的,当然就有结果返回了。

还有2个参数:timeBetweenEvictionRunsMillis 和 minEvictableIdleTimeMillis,他们两个配合,可以持续更新连接池中的连接对象,当 timeBetweenEvictionRunsMillis 大于0时,每过timeBetweenEvictionRunsMillis 时间,就会启动一个线程,校验连接池中闲置时间超过minEvictableIdleTimeMillis的连接对象。

还有其他的一些参数,可以参考源代码。

部分参数简要说明:

removeAbandoned :是否自动回收超时连接

removeAbandonedTimeout:超时时间(以秒数为单位)

rmoveAbandoned=true那么在getNumActive()快要到getMaxActive()的时候,系统会进行无效的 Connection的回收,回收的Connection为removeAbandonedTimeout(默认300秒)中设置的秒数后没有使用的 Connection

logAbandoned:logAbandoned=true的话,将会在回收事件后,在log中打印出回收Connection的错误信息,包括在哪个地方用了Connection却忘记关闭了,在调试的时候很有用。

maxWait:超时等待时间以毫秒为单位

maxIdle:最大空闲连接

minIdle:最小空闲连接

maxActive:最大连接数

testOnBorrow、testOnReturn、testWhileIdle、validationQuery:上面有介绍

另外很重要的一点是每次连接使用完了不要忘了调用connection.close()使连接返回到连接池

mysql长时间后断开_mysql 长时间没连接了 就会自动断开服务相关推荐

  1. mysql没多久自动断开服务_mysql 长时间没连接了 就会自动断开服务

    这是因为mysql 长时间没连接了 就会自动断开服务. 解决办法 1.首先,下载必须的jar包 dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ ...

  2. 客户端连接mysql 自动断开_MySql连接空闲8小时自动断开的原因及连接池配置方法...

    数据库连接超时时间查询 非交互式超时时间,如 JDBC 程序 show global variables like 'wait_timeout'; 交互式超时时间,如数据库工具 show global ...

  3. mysql时长用什么类型_MySQL 日期时间类型怎么选?千万不要乱用!

    构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp. 不仅新手,包 ...

  4. mysql内置时间函数大全_MySQL 的时间函数 大全

    MySQL 的时间函数 大全 2014年02月14号 发表于:评论 (1) 热度:1109 一.MySQL获得当前日期时间函数 1.1  获得当前日期+ 时间(date  +  time)函数:now ...

  5. mysql php 时间比较大小_MySql中时间比较的实现

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 mysql SELECT "1997-12-31 23:59:59" + INTERVAL 1 SEC ...

  6. MySQL时间字段效率_MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较

    正 文: 在数据库设计的时候,我们经常会需要设计时间字段,在MYSQL中,时间字段可以使用int.timestamp.datetime三种类型来存储,那么这三种类型哪一种用来存储时间性能比较高,效率好 ...

  7. mysql添加时间默认值_mysql 创建时间字段添加默认值

    在创建时间字段的时候 例如:字段  create_time   默认值可以设置为CURRENT_TIMESTAMP插入数据时候会自动添加时间,默认值为当前时间 update_time  默认值可以设置 ...

  8. MySQL+Hibernate下连接空闲8小时自动断开问题解决方案

    本文转自http://blog.sina.com.cn/s/blog_6e6bbaf20100uocd.html,所有权利归原作者所有. 前段时间刚完成一个项目,数据库为MySQL5.0,持久层使用H ...

  9. mysql数据库中修改错别字_MYSQL 复杂查询超时连接 lost Error 与 错别字

    最近的错别字是越来越厉害,上一篇开头就是两个错别字,恨得我要死,不检查,并且一边写一边查让写的语句也变得像是 translation的.所以最近在反思,数量和质量之间的问题,每周5天,天天一篇,虽然说 ...

最新文章

  1. ArcGIS制图之Sub Points点抽稀
  2. hadoop周边 框架体系
  3. Linux下JNI实现
  4. java resources目录 编码_关于Java项目读取resources资源文件路径
  5. 从零开始html css,HTML/CSS从零开始-常用属性(三)
  6. 为特使构建控制平面的指南-为可插入性构建
  7. matlab kfda,SVD与KFDA相结合人脸识别-matlab-毕业论文
  8. java学习(136):带泛型的类
  9. iou画 yolov3_专栏 | 【从零开始学习YOLOv3】4. YOLOv3中的参数进化
  10. mysql数据库持续_MySql数据库--持续记录ing
  11. python dataframe的某一列变为list_Python数据分析系列文章之Pandas(上)
  12. Bug(二)——error LNK1104:无法打开“opengl32.lib”
  13. Windows7下UEFI开发EDK2环境搭建(VS2013+UDK2015+IASL+patch+Openssl)
  14. 仿真树叶飘落效果的实现(精灵旋转…
  15. ASAM MCD2D 笔记(1) - ODX use cases
  16. 2004-6-6 0:03:43 死得其所
  17. Aspose.Cells.dll的运用
  18. 违反唯一性约束的两种可能:唯一约束or唯一索引
  19. Unity中Editor取消输入框焦点
  20. pytorch:交叉熵(cross entropy)

热门文章

  1. ASP .NET 如何在 SQL 查询层面实现分页 1
  2. 《GO并发编程实战》—— 条件变量
  3. 1.22 OSS旧IP下线公告
  4. [转]在SSIS中,使用“包配置”时的常见错误与解析
  5. 查看修改oracle数据库字符集
  6. JS分页控件,可用于无刷新分页
  7. 调用Xmlrpc接口
  8. SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
  9. python的JSON模块和OS模块
  10. python 哥德巴赫猜想的验证