因各种奇葩原因只能自制一个简易的连接池
虽然不是那么强大, 但是已经满足了项目的要求。
能快速的获取和定期释放连接即可,包括max,min的阈值效用定义一个对象。这没什么好说的
import java.sql.Connection;
/**
* 连接池对象容器
*
* @author Allen
* @date 2016年10月31日
*
*/
public class SqlitePojo {
private long createTime;// 时间戳
private Connection con;// 链接对象
public SqlitePojo() {
// TODO Auto-generated constructor stub
}
public SqlitePojo(long createTime, Connection con) {
this.createTime = createTime;
this.con = con;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public Connection getCon() {
return con;
}
public void setCon(Connection con) {
this.con = con;
}
}
我们通过配置在初始化的时候按照min进行连接预创建,并启动了回收机制
每个连接对象都有自己的时间戳,来保障回收线程可以抓到他,消灭它
创建数据库就不说了,每天创建一个。
先进先出从池子里面获取数据库链接,当链接不足的时候填满它,就那么简单,没有复杂的要求,没有复杂的规划。
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
import java.util.Vector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.troila.core.utils.PropertiesUtils;
/**
* sqlite连接池
*
* @author Allen
* @date 2016-10-31
*
*/
public class SqliteFactory {
private static Log logger = LogFactory.getLog("interceptorLog");
private static int max = Integer.parseInt(PropertiesUtils.sourceMap.get("sqlite.max"));// 最大池链接
private static int min = Integer.parseInt(PropertiesUtils.sourceMap.get("sqlite.min"));// 初始池链接
private static int step = Integer.parseInt(PropertiesUtils.sourceMap.get("sqlite.step"));// 每次最大补充线程数量
private static String dbPath;// 数据库链接路径
private static String timeFlag;// 日期时间戳
protected static long timeout = Integer.parseInt(PropertiesUtils.sourceMap.get("sqlite.timeout"));// 超时线程回收
protected