[计算机]RMI.pptVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机]RMI

一个RMI的分布式应用的实例 用RMI编写一个分布式应用,核心有以下三方面: 定位远程对象 1. 一个应用可以利用RMI的名字服务功能注册器远程对象。 2. 可以象操作普通对象一样传送并返回一个远程对象的引用(指针)。 与远程对象通信: 底层的通信由RMI实现,对于系统开发人员来说,远程调用和标准的Java方法调用没有什么区别。 为需要传递的对象装载类的字节码 RMI允许调用者向远程对象传递一个对象,因此 RMI提供这种装载对象的机制。 分布特点: engin开发,先运行,task后定义.写engin时不对执行什么任务作任何规定.任务可以是任意定制的. 前提条件: 定义任务的类,要规定任务的实现步骤,使得这个任务能够提交给engin去执行.使用server上的 CPU资源. 技术支持: RMI的动态装载功能. 二、设计一个服务器 核心协议:提交任务,执行任务,返回结果 (1)定义远程接口 第一个接口:compute Compute engin的设计要考虑以下问题: 1. compute engine是一个类 ComputeEngine ,它实现了 Compute接口,只要调用该类的方法executeTask, 任务就能提交上来. 2. 提交任务的Client 端程序并不知道任务是被下载到engin上执行的.因此client在定义任务时并不需要包含如何安装的server端的代码. 3. 返回类型是对象,如果结果是基本类型,需要转化成相应的对等类. 4. 用规定任务如何执行的代码填写execute方法. (2)实现远程接口 一般说来,实现一个远程接口的类至少有以下步骤: 1. 声明远程接口 2. 为远程对象定义构造函数 3. 实现远程方法 engin中创建对象的工作可以在实现远程接口类的main函数中实现: 1. 创建一个或更多的远程对象的实例 2. 至少注册一个远程对象 在构造函数中,通过super(), a UnicastRemoteObject 被启动,即它可以侦听客户端来的请求输入 只有一个远程方法,参数是客户端远程调用这个方法时传来的任务.这个任务被下载到engin,远程方法的内容就是调用客户端任务的方法,并把结果回送给调用者.实际上这个结果是在客户的任务的方法中体现的. 通过引用传递一个对象,意味着任何由于远程调用引起的变化都能反映在原始的对象中。 当传递一个远程对象时,只有远程接口是可用的, 而在实现类中定义的方法或者是非远程接口中的方法,对接收者来说是不可用的 在远程方法调用中,参数,返回值,异常等非对象是值传送. 这意味着对象的拷贝被传送到接受方。任何在对象上发生的变化不影响原始的对象 一旦服务器用rmi注册了,main方法就存在了,不需要一个守护线程工作维护服务器的工作状态,只要有一个computer engin的引用在另一个虚拟机,computer engin就不会关闭 三、实现一个客户程序 目标:创建一个任务,并规定如何执行这个任务。 Web Server Client Server Web Server registry URL protocol RMI RMI URL protocol URL protocol RMI Compute engin Server Remote object Client task Client task Client task 一、问题的提出 远程对象 client server A m1 远程方法 A.m1() 远程对象必须继承远程接口 确定那些方法是远程方法,为此定义远程接口 远程接口只负责提供方法名,不一共实现细节,因此必须由一个对象来实现接口 executeTask compute engine Compute execute Task client client 在java中远程调用是通过定义远程接口来实现的, 一个接口只能有一个方法 不同类型的任务,只要他们实现了Task类型,就可以在engin上运行. 实现这个接口的类,可以包含任何任务计算需要的数据以及和任何任务计算需要的方法. package compute; import java.rmi.Remote; import java.rmi.RemoteException; public interface Compute extends Remote { Object executeTask(Task t) throws RemoteException;} executeTask compute engine Compute execute Task executeTask compute engine Compute

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档