动态代理的概念你还没完全理解;你上面的public Connection proxyConnection(Connection conn){
你希望代理的是Connection 实例;当调用代理类的方法时,会回调invoke方法,在这个方法中你需执行Connection 的方法,然后返回方法的执行结果;不应该是你上面写的返回那个代理类对象;改正:private class ToolOfInPoolConnection implements InvocationHandler {
Connection conn;
public Connection proxyConnection(Connection conn){
this.conn = conn;
conn = (Connection) Proxy.newProxyInstance(conn.getClass().getClassLoader() , conn.getClass().getInterfaces() , this );
return conn ;
} public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if( "close".equalsIgnoreCase(method.getName()) ){
System.out.println("ok");
}else{
System.out.println("No");
}
return method.invoke(conn, args);
}
}
是的,一阵见血!!!
谢过 !!!
---------------------
请问,可否再指教下我另一个问题,谢过:http://bbs.csdn.net/topics/390779869