java - 创建我自己的 SQL 连接池,想知道这是否是不好的做法/有故障?
问题描述
因此,我使用填充了 SQLConnection 对象列表的阻塞队列创建了自己的 MySQL 连接池:
public class SQLConnection {
private Connection connection;
private int uses;
private long alive;
protected SQLConnection() {
try {
this.connection = DriverManager.getConnection(SQLPool.URL, SQLPool.USER, SQLPool.PASS);
} catch (SQLException e) {
e.printStackTrace();
}
this.uses = 0;
this.alive = System.currentTimeMillis();
}
protected void addUse() {
uses++;
}
protected boolean isRenew() {
try {
if (connection.isClosed() || uses > 100 || getAlive() > 900000) {
return true;
}
} catch (Exception e) {
return true;
}
return false;
}
protected boolean isAvailable() {
try {
return !connection.isClosed();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
池(代码未显示)有一个retrieveResource() 和returnResource(SQLConnection conn) 方法,以及BlockingQueue。它似乎工作得很好,在它的存活时间超过 15 分钟或它有 100 次使用后,它会从池中转储并添加一个新实例。由于我的项目必须非常扎实,我想知道是否会出现任何明显的问题?
解决方案
推荐阅读
- django - 没有对象的 Django ManyToMany 相关管理器返回 True
- node.js - Mongoose 模型#聚合函数返回 0
- azure - Azure:代理已收到关闭信号。当代理服务停止或手动启动的代理被取消时,可能会发生这种情况
- data-recovery - 分区格式 f2fs 后恢复数据
- node.js - 使用 POST 将文件从 HTML5 网页上传到 Node.js 服务器
- python - Pandas read_table() -- 如何使用多种自定义 NA 格式?
- php - 如何计算数组的频率(PHP)
- macos - macOS 控制台中的 7za ax(添加文件除外)语法。
- javascript - 将用户输入存储到 localStorage
- java - 返回 ArrayList Java 中的列表