public class MyDataSource {
private LinkedList<Connection> connectionPool = new LinkedList<Connection>();
public MyDataSource() {
for (int i = 0; i < 10; i++) {
connectionPool.add(new MyConnection(creatConnection(),this));
}
}
private Connection creatConnection() {
try {
return DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new ExceptionInInitializerError();
}
}
public Connection getConnection(){
System.out.println(connectionPool.size());
return connectionPool.removeFirst();
}
public void freeConnection(Connection conn){
System.out.println("DataSource Close Connection");
connectionPool.addLast(conn);
}
}
public class MyConnection implements Connection{
private Connection connection;
private MyDataSource datasource;
public Connection getConnection() {
return connection;
}
public void setConnection(Connection connection) {
this.connection = connection;
}
public MyConnection(Connection realconnection,MyDataSource datasource){
this.connection=realconnection;
this.datasource=datasource;
}
@Override
public void close() throws SQLException {
// TODO Auto-generated method stub
System.out.println("MyConnection Close");
datasource.freeConnection(this);
}
...
}
public class MyDataSource {
private LinkedList<Connection> connectionPool = new LinkedList<Connection>();
public MyDataSource() {
for (int i = 0; i < 10; i++) {
connectionPool.add(GetProxy(creatConnection()));
}
}
private Connection GetProxy(final Connection connection) {
// TODO Auto-generated method stub
return (Connection)Proxy.newProxyInstance(this.getClass().getClassLoader(), new Class[]{Connection.class}, new InvocationHandler(){
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
Object value;
if(method.getName().equalsIgnoreCase("close")){
connectionPool.addLast((Connection)proxy);
System.out.println(connectionPool.size());
return null;
}else{
value=method.invoke(connection, args);
}
System.out.println(connectionPool.size());
return value;
}
});
}
private Connection creatConnection() {
try {
return DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
} catch (SQLException e) {
// TODO Auto-generated catch block
throw new ExceptionInInitializerError();
}
}
public Connection getConnection(){
System.out.println(connectionPool.size());
return connectionPool.removeFirst();
}
public void freeConnection(Connection conn){
System.out.println("DataSource Close Connection");
connectionPool.addLast(conn);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有