9.6一个RM的分式应用的实 。在构造函数中通过 uperO, a UnicastRemoteObject 被启动,即它可以侦听客户端来的请求输入 只有一个远程方法,参数是客户端远程调用这个方法 过时传来的任务这个任务被下载到 engin,远程方法的 机内容就是调用客户端任务的方法并把结果回送给调 系用者实际上这个结果是在客户的任务的方法中体现 的 compute engine 代亚非 callexecute Task(task) Compute X Task executeTask‖ execute
北 京 大 学 计 算 机 系 代 亚 非 11 9.6 一个RMI的分布式应用的实例 • 在构造函数中,通过super(), a UnicastRemoteObject 被启动,即它可以侦听客户端来的请求输入 • 只有一个远程方法,参数是客户端远程调用这个方法 时传来的任务.这个任务被下载到engin,远程方法的 内容就是调用客户端任务的方法,并把结果回送给调 用者.实际上这个结果是在客户的任务的方法中体现 的. executeTask compute engine Compute execute Task callexecuteTask(task)
9.6一个RM的分式应用的实 ·参数传递规则: 原|·1远程对象通常通过引用传递一个远程对象的引 用是一个mb,它是客户端的代理它实现远程对象 中的远程接囗的内容 计 2.本地对象通过串行化拷贝到目的如果不作制 机 崇定,对象的所有成员都将被拷贝 代亚非
北 京 大 学 计 算 机 系 代 亚 非 12 9.6 一个RMI的分布式应用的实例 • 参数传递规则: • 1. 远程对象通常通过引用传递.一个远程对象的引 用是一个stub,它是客户端的代理.它实现远程对象 中的远程接口的内容 • 2. 本地对象通过串行化拷贝到目的. 如果不作制 定,对象的所有成员都将被拷贝
9.6一个RM的分式应用的实 ·通过引用传递一个对象,意味着任何由于远程洞 用引起的变化都能反映在原始的对象中。 当传递一个远程对象时,只有远程接口是可用的, 计而在实现类中定义的方法或者是非远程接口中的 机方法,对接收者来说是不可用的 系·在远程方法调用中,参数,返回值,异常等非对 象是值传送这意味着对象的拷贝被传送到接受 代方。任何在对象上发生的变化不影响原始的对象 旦服务器用rm注册了,main方法就存在了, 不需要一个守护线程工作维护服务器的工作状态, 只要有一个 computer engin的引用在另一个虚拟 机, computer engin就不会关闭
北 京 大 学 计 算 机 系 代 亚 非 13 9.6 一个RMI的分布式应用的实例 • 通过引用传递一个对象,意味着任何由于远程调 用引起的变化都能反映在原始的对象中。 • 当传递一个远程对象时,只有远程接口是可用的, 而在实现类中定义的方法或者是非远程接口中的 方法,对接收者来说是不可用的 • 在远程方法调用中,参数,返回值,异常等非对 象是值传送. 这意味着对象的拷贝被传送到接受 方。任何在对象上发生的变化不影响原始的对象 • 一旦服务器用rmi注册了,main方法就存在了, 不需要一个守护线程工作维护服务器的工作状态, 只要有一个computer engin的引用在另一个虚拟 机,computer engin就不会关闭
9.6一个RM的分式应用的实 、实现一个客户程序 ·目标:创建一个务,并规定如何执行这个任务 计 client package compute ii public interface Task extends java io Serializable i computeR Object executed 代 execute ExecuteTasko 菲·tas不是远程接口,但是需要传递到服务器,因 此用串行化
北 京 大 学 计 算 机 系 代 亚 非 14 9.6 一个RMI的分布式应用的实例 三、实现一个客户程序 • 目标:创建一个任务,并规定如何执行这个任务。 client Pi computePi package compute; public interface Task extends java.io.Serializable { Object execute(); } • task不是远程接口,但是需要传递到服务器,因 此用串行化 execute() ExecuteTask()
9.6一个RM的分式应用的实 北· computeR的作用 装载安全管理器 生成一个远程对象 comp Look up( ComputeEngin,获得了sbs 计 机 生成任务对象 Pi=new Pio 系调用 Compute engin的远程方法 Comp. execute Task(task) 获得计算结果 代亚非 15
北 京 大 学 计 算 机 系 代 亚 非 15 9.6 一个RMI的分布式应用的实例 • computePi的作用 装载安全管理器 生成一个远程对象comp 生成任务对象 Look up(ComputeEngin),获得了stubs Pi task=new Pi() 调用ComputeEngin的远程方法 获得计算结果 Comp.executeTask(task)