利用语言与平台特性改进RMI分布计算框架

上传人:pu****.1 文档编号:423854430 上传时间:2024-01-20 格式:DOCX 页数:4 大小:13.96KB
返回 下载 相关 举报
利用语言与平台特性改进RMI分布计算框架_第1页
第1页 / 共4页
利用语言与平台特性改进RMI分布计算框架_第2页
第2页 / 共4页
利用语言与平台特性改进RMI分布计算框架_第3页
第3页 / 共4页
利用语言与平台特性改进RMI分布计算框架_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《利用语言与平台特性改进RMI分布计算框架》由会员分享,可在线阅读,更多相关《利用语言与平台特性改进RMI分布计算框架(4页珍藏版)》请在金锄头文库上搜索。

1、利用语言与平台特性改进RMI分布计算框架论文导读:RMI(Remote Method Invocation)是Sun设计的基于Java的轻量级分布对象计算解决方案。RMI不但在本身的体系结构设计上非常优秀,它还利用和继承了Java平台的若干得天独厚的特性,譬如平台无关性、(分布)垃圾回收、安全性、代码移动性、类动态加载等等。关键词:Java,RMI,Stub/Skelton,Serialization,DynamicProxy,DynamicClassLoading1引言至今为止,几乎所有的分布式计算框架都采用了Stub/Skelton设计,如OMG的CORBA、MicroSoft的DCOM、

2、Sun MicroSystems的RMI,以“通明化“远程调用。动作序列一般如下:客户端的远程调用”代理“给Stub,Stub与客户端分布计算引擎交互,客户端的引擎与服务器端的引擎通信,传递调用信息,服务器端的分布计算引擎与Skeleton交互,Skeleon将远程调用转发给远程对象实施。然后,再沿相反的路径传回结果。如图1所示.图1RMI(Remote Method Invocation)是Sun设计的基于Java的轻量级分布对象计算解决方案。RMI不但在本身的体系结构设计上非常优秀,它还利用和继承了Java平台的若干得天独厚的特性,譬如平台无关性、(分布)垃圾回收、安全性、代码移动性、类动

3、态加载等等。它是EJB和JINI的分布特性支持技术。2RMI的编程模型和本质2.1RMI的编程模型2.1.1定义远程接口public interface HelloWorld extendsRemotepublic StringreturnGreeting(String param) throws RemoteException;这个接口定义了远程对象行为,RMI规范规定远程接口需要直接或间接扩展Remote接口并且方法签名需要抛出RemoteException异常。2.1.2 实现远程接口public class HelloWorldImpl extends UnicastRemoteObj

4、ect implements HelloWorldpublicHelloWorldImpl() throws RemoteException super(); public StringreturnGreeting(String param) return “Hello”+param;2.1.3 服务器端(Main.java)生成远程对象,并利用registry将之与一定的名字绑定。/* */HelloWorldImpl hwi =new HelloWorldImpl();Naming.bind(“HelloWorld”,hwi);/* */2.1.4 创建客户端(Client.java)/*

5、 */System.setSecurityManager(new RMISecurityManager();HelloWorld hw = (HelloWorld)Naming.lookup(“rmi:/localhost/HelloWorld”);System.out.println(hw.returnGreeting(“World”);/* */2.1.5 编译源代码javacHelloWorld.java HelloWorldImpl.java Main.java Client.java产生文件HelloWorld.class、HelloWorldImpl.class、Main.clas

6、s、Client.class、HelloWorldImpl_Stub.class、HelloWorldImpl_Skel.class。2.1.6 运行系统服务器端首先配置文件HelloWorld.class、HelloWorldImpl.class、Main.class、HelloWorldImpl_Stub.class、HelloWorldImpl_Skel.class文件,然后执行java rimregistryjava Main客户端首先配置文件HelloWorld.class、HelloWorldImpl_Stub.class然后执行java Client2.2RMI的本质这里我们以上

7、面叙述编程模型时使用的实例来描述追踪RMI的运作,从而探出本质。2.2.1 服务器(Main.java)中,HelloWorldImpl hwi = newHelloWorldImpl();Naming.bind(“HelloWorld”,hwi);上面两句,实现了远程对象的导出(export),并将之与名字HelloWorld绑定。这里我们需要深入探讨,直入本质,因为我们的改进的一部分就是在这里着手的。因为HelloWorldImpl继承了UnicastRemoteObject,而UnicastRemoteObject在构造函数中通过exportOjbet将对象导出到特定端口,以使得对象可被

8、远程引用。ExportObject将远程对象置入一个ObjectTable中,并且加载HelloWorldImpl_Stub,并且将Stub与名字绑定。而不是一般认为的远程对象。这样作的目的主要是考虑到远程对象作为参数或返回值的时候,只能传入Stub,而不能移动远程对象实体,满足分布式环境计算的需要。2.2.2 客户端(Client.java)中,HelloWorld hw =(HelloWorld)Naming.lookup(“rmi:/localhost/HelloWorld”)解析。自然,在使用远程对象之前,需要获得远程对象引用。这一步是通过registry来实现的,registry事实上,是rmi专用的名字服务工具。它也是远程对象,默认运作在2009端口,也可以使用LocateRegistry.createRegistry()在特定端口导出它。客户端的lookup操作会首先取得服务器端registry的远程引用,然后使用远程引用再查询HelloWorldImpl,从服务器端获得的远程引用事实上是一个Stub,所以我们上面的hw事实上是代表Stub的RemoteObject。到此为止,我们已经取得了远程对象的远程引用。2.2.3 客户端(Client.java)中hw.returnGreeting(“World”)解析。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号