浏览 1298 次
锁定老帖子 主题:动态代理Connection
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-21
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); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |