package com.lxt008;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Vector;
public class ConnectionPool {
private static Connection conn;
private static Vector pool;
private static int POOL_MAX_SIZE;
public static Connection createConnection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:accp","scott","tiger");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static synchronized Connection getConnection()
{
Connection newCon=null;
if(pool==null)
{
pool=new Vector();
}
if(pool.size()==0)
{
newCon=createConnection();
}
else
{
//获取的连接必须从池中删除.
int last_idx=pool.size()-1;
conn=(Connection)pool.get(last_idx);
pool.remove(pool.get(last_idx));
}
//因为需要对Connection的close()方法进行拦截
//所以需要要给Connection接口动态加入代理,getConnection()是加入代理的好地方
//cp是动态代理对象
ConnectionProxy cp=new ConnectionProxy(newCon);
return cp.bind(newCon);
}
public static synchronized void releaseConnection(Connection con)
{
if(pool.size()>POOL_MAX_SIZE)
{
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
pool.add(con);
}
}
}
spring动态代理
需积分: 9 198 浏览量
2008-11-28
10:00:36
上传
评论
收藏 6KB RAR 举报
twb008
- 粉丝: 5
- 资源: 14
最新资源
- 基于QT的地图可视化桌面系统后台数据库为MySQL5.7源码.zip
- 基于simulink的PLL锁相环系统仿真【包括模型,文档,参考文献,操作步骤】
- 基于EM-GMM模型的目标跟踪和异常行为检测matlab仿真【包括程序,注释,参考文献,操作步骤,说明文档】
- 2109010044_胡晨燕_选课管理数据库设计与实现.prj
- 帕鲁介绍的PPT备份没什么好下的
- demo1-202405
- 两种方式修改Intel网卡MAC地址
- 服务器搭建所需资源:static文件夹
- Vue02的源码学习资料
- Python 程序语言设计模式思路-行为型模式:访问者模式:在不改变被访问对象结构的情况下,定义对其元素的新操作
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈