动态代理Connection

package com.yunchow.util;

import java.sql.*;
import java.lang.reflect.*;

/**
* connection处理器
* @author yunchow
* @version 1.2 09/8/6
*/
class MyConnection implements InvocationHandler {
/** 目标对象 */
private Connection targetConnection;
/** 代理对象 */
private Connection proxyConnection;

MyConnection(Connection conn) {
targetConnection = conn;
}
/**
* 释放一个连接资源
*/
void release() {
try {
if(targetConnection != null)
targetConnection.close();
//System.out.println("清除成功\t" + targetConnection.createStatement());
} catch(Exception ex) {
ex.printStackTrace();
}
}

Connection getProxy() {
proxyConnection = (Connection)Proxy.newProxyInstance(this.getClass().getClassLoader(),
new Class[]{Connection.class, DBSourceRelease.class},this);
return proxyConnection;
}
public Object invoke(Object proxy,Method method,Object[] args)
throws Throwable {
if("close".equals(method.getName())){ // 截获close方法
MyDataSource.rebackConnection(proxyConnection);
return null;
} else if("release".equals(method.getName())) {
release();
return null;
}
return method.invoke(targetConnection, args);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值