`
yunchow
  • 浏览: 319782 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

动态代理Connection

    博客分类:
  • DBI
阅读更多
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);
	}							
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics