Hadoop源码分析4: 动态代理
来源:互联网 发布:mac 听写 插件 编辑:程序博客网 时间:2024/06/05 00:23
1.数据记录FileStatus
private String filename; private long time; public FileStatus(String filename) { this.filename=filename; this.time=(new Date()).getTime(); } public String toString() { return "File: "+filename+" Create at "+(newDate(time)); }
FileStatus getFileStatus(String filename);
@Override public FileStatus getFileStatus(String filename){ FileStatus status=newFileStatus(filename); return status; }
private QueryStatus queryStatus;
public MyInvocationHandler(QueryStatusqueryStatus) { this.queryStatus = queryStatus; }
@Override public Object invoke(Object proxy, Methodmethod, Object[] args) throws Throwable{ System.out.println("----事务开始--"); System.out.println("正式做事"); Object ret =method.invoke(queryStatus, args); System.out.println("做事完成"); System.out.println("----事务结束--"); return ret; }
Class[] interfaces = newClass[] { QueryStatus.class }; ClassLoaderclassLoader = QueryStatus.class.getClassLoader(); MyInvocationHandler handler =new MyInvocationHandler(new QueryStatusImpl()); QueryStatusqueryProxy = (QueryStatus)Proxy.newProxyInstance(classLoader, interfaces,handler); FileStatusstatus = queryProxy.getFileStatus("/tmp/testDP"); System.out.println("结果:"+status);
public class FileStatus {
}
2.服务接口和实现
public interface QueryStatus {
}
public class QueryStatusImpl implementsQueryStatus {
}
3.代理的InvocationHandler
public class MyInvocationHandler implementsInvocationHandler {
}
4.使用代理
public static void main(String[] args) {
}
打印结果:
----事务开始--
正式做事
做事完成
----事务结束--
结果:File: /tmp/testDP Create at Fri Feb 28 12:02:47 CST2014
0 0
- Hadoop源码分析4: 动态代理
- jdk动态代理生成代理对象源码分析-4
- Java 动态代理源码分析
- Java 动态代理源码分析
- JDK动态代理源码分析
- cglib动态代理源码分析
- 动态代理模式2--源码分析
- AOP 动态代理 的 源码分析
- 【Java】从源码分析动态代理机制
- MyBatis 源码分析——动态代理
- java-动态代理-从源码分析
- JDK动态代理源码分析之一
- JDK动态代理源码分析之二
- Java基础:JDK动态代理源码分析
- 静态代理与动态代理 及源码分析
- hadoop源码研读之路(五)----Java动态代理
- hadoop源码研读之路(五)----Java动态代理
- Hadoop源码解析之java动态代理机制
- 正则表达式划分CSV
- Hadoop源码分析1: 客户端提交JOB
- Hadoop源码分析2: NIO Socket 分析
- Hadoop源码分析3: 序列化
- tortoisegit分支使用
- Hadoop源码分析4: 动态代理
- Hadoop源码分析5: RPC基本线程
- Hadoop源码分析6: RPC基本线程
- Hadoop源码分析6: Buffer 细节
- 联通让“打110”,我该怎么办?
- Hadoop源码分析7: IPC流程(1) 主要类
- Hadoop源码分析7: IPC流程(2) 流程
- Hadoop源码分析8: IPC流程(3)客户端的clients、connections、calls复用
- Hadoop源码分析9:IPC流程(4) Client 的 wait() 和 notify()