java proxy

package jdbc.test;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;

public class ProxyConnection {

 public static Connection getConnection(final Connection conn) {
  return (Connection) Proxy.newProxyInstance(conn.getClass()
    .getClassLoader(), new Class[] { Connection.class },
  new InvocationHandler() {
   @Override
   public Object invoke(Object arg0, Method arg1, Object[] arg2)
     throws Throwable {
    if (arg1.getName().equalsIgnoreCase("close")) {
     System.out.println("close method is invoked!");
    }
    return arg1.invoke(conn, arg2);
   }
  });
 }
}

posted on 2010-07-13 07:10  sunliho  阅读(314)  评论(0编辑  收藏  举报