利用语言与平台特性改进RMI分布计算框架 |
时间:2011-04-23 作者:秩名 |
|
|
new ReconnectProxy(server, HelloWorld.NAME));
hw = (HelloWorld)Proxy.newProxyInstance(HelloWorld.getClass().getClassLoader(),
new Class[] { HelloWorld.class },
new PerformanceProxy(hw));
Naming.bind(HellotWorld.NAME, server);
上面仅为示例,我们在打算在服务器端添加一个LogProxy,在客户端添加
ReconnectProxy和PerformanceProxy。决定到底是否是客户端拦截器的是是否使用UnicastRemoteObject.exportObject导出远程对象,因为RMI规范规范没有将Stub与名字绑定的对象,在远程引用的时候,直接将远程对象自身序列化到客户端,而不是它的Stub,这里实施了一个Trick。
5.我们可以看到上面使用了大量的拦截器。事实上,拦截器主要的功能就是实施特殊应需求,并且传递调用。最基本的要求,它们需要继承InvocationHandler,并且implements Serializable 。
LogProxy示例:
public class LogProxy implementsInvocationHandler, java.io.Serializable, LinkedProxy
{
/* …… … … */
public Object invoke(Objectproxy,
Method method,
Object[] args) throws Throwable{
/**
省略:具体的LogProxy拦截器行为在这里实施
**/
try{
return method.invoke(next, args);
} catch(InvocationTargetException e){
throw e.getTargetException();
/** 省略:next 相关的操作 **/
} } }
5结语:改进的意义和应用
RMI作为目前最为优秀的分布计算框架之一,应用非常广泛,特别是企业级的系统基础架构。而企业级架构中事务特性、日记、性能评价、设计上优秀的扩展性、网络范围管理的便利等等都是很必要的。Interceptor-RMI框架正是为了适应了这一需求而设计的。它为企业分布计算基础架构提供了一个优秀的参考。
参考文献
[1]SunMicroSystems,inc. RMI Specification[R]. Sun MicroSystems, 2003.
[2]JINI核心技术 机械工业出版社 2000
[3]Ed Roman,Scott Ambler. 精通EJB[M]. 北京:电子工业出版社,2002.
[4]Marko Boger. Java与分布式系统[M]. 北京:机械工业出版社,2003.
[5] Rickard Öberg. 精通RMI-Java与EJB企业级应用开发. 北京:机械工业出版社,2003.
[6] 朱刚等. Linux网络编程. 北京:科学出版社,2000.
[7]Don Box. COM本质论. 北京:中国电力出版社,2002.
[8] 何炎祥,陈莘萌. Agent和多Agent系统的设计和应用. 武汉:武汉大学出版社,2001.
3/3 首页 上一页 1 2 3 |
|
|
|