加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

长途要领挪用RMI详解,和RPC的思绪很相似

发布时间:2019-06-22 12:39:01 所属栏目:教程 来源:冬瓜蔡
导读:RMI的界说 RPC (Remote Procedure Call):长途要领挪用,用于一个历程挪用另一个历程中的进程,从而提供了进程的漫衍手段。 RMI(Remote Method Invocation):长途要领挪用,即在RPC的基本上有向前迈进了一步,提供漫衍式工具间的通信。应承运行在一个java 虚
副问题[/!--empirenews.page--]

长途要领挪用RMI详解,和RPC的思绪很相似

RMI的界说

RPC (Remote Procedure Call):长途要领挪用,用于一个历程挪用另一个历程中的进程,从而提供了进程的漫衍手段。

RMI(Remote Method Invocation):长途要领挪用,即在RPC的基本上有向前迈进了一步,提供漫衍式工具间的通信。应承运行在一个java 假造机的工具挪用运行在另一个java假造机上工具的要领。这两个假造机可所以运行在沟通计较机上的差异历程中,也可所以运行在收集上的差异计较机中。

RMI的全称宗旨就是只管简化长途接口工具的挪用。

RMI大大加强了java开拓漫衍式应用的手段,譬喻可以将计较要领伟大的措施放在其他的处事器上,主处事器只必要去挪用,而真正的运算是在其他处事器长举办,最后将运算功效返回给主处事器,这样就减轻了主处事器的承担,进步了服从(可是也有其他的开销)。

RMI收集模子

在计划初始阶段,我们真正想要的是这样一种机制,客户端措施员以通例方法举办要领挪用,而无需劳神将数据发送到收集上可能理会相应之类的题目。以是才有了如下的收集模子:在客户端为长途工具安装一个署理。署理是位于客户端假造机中的一个工具,它对付客户端措施来说,就像是要会见的长途工具一样。客户端挪用此署理时,只需举办通例的要领挪用。而客户端署理则认真行使收集协议与处事器举办接洽。

长途要领挪用RMI详解,和RPC的思绪很相似

此刻的题目在于署理之间是怎样举办通讯的?凡是有三种要领:

1、CORBA:通过工具哀求署理架构,支持任何编程说话编写的工具之间的要领挪用。

2、SOAP

3、RMI:JAVA的长途要领挪用技能,支持java的漫衍式工具之间的要领挪用。

个中CORBA与SOAP都是完全独立于言语的,可以行使C、C++、JAVA来编写,而RMI只合用于JAVA。

RMI的事变道理

一、术语先容

1、存根:当客户端要挪用长途工具的一个要领时,现实上挪用的是署理工具上的一个平凡要领,我们称此署理工具为存根(stub)。存根位于客户端呆板上,而非处事器上。

2、参数编组:存根会将长途要领所需的参数打包成一组字节,对参数编码的进程就称为参数编组。参数编组的目标是将参数转换成得当在假造机之间举办转达的名目,在RMI协议中,工具是行使序列化机制举办编码的。

二、编程模子

为了先容RMI的编程模子,我下面会编写一个DEMO。长途工具暗示的是一个客栈,而客户端措施向客栈扣问某个产物的价值。

1、接口界说

长途工具的手段是由在客户端和处事器之间共享的接口所暗示的:

长途要领挪用RMI详解,和RPC的思绪很相似

长途工具的接口必需扩展Remote接口,它位于java.rmi包中。接口中全部的要领必需声明抛出RemoteException非常。这是由于长途要领老是存在失败的也许,以是java编程说话要求每一次长途要领的挪用都必需捕捉RemoteException,而且指明当挪用不乐成时应执行的响应处理赏罚操纵。

2、接口的实现

长途要领挪用RMI详解,和RPC的思绪很相似

你可以看出这个类是长途要领挪用的方针,由于它扩展自UnicastRemoteObject,这个类的结构器使得它的工具可供长途会见。

3、RMI注册表:通过JNDI宣布RMI处事

  1. 要会见处事器上的一个长途工具时,客户端必需先获得一个当地的存根工具,也就是客户端呆板上的署理工具。那么题目来了,怎样才气获得这个存根呢?
  2. 为此,JDK提供了自举注册处事(bootstrap registry service),处事器措施应该行使自举注册处事来注册至少一个长途工具。
  3. 而要注册一个长途工具,必要一个RMI URL和一个对实现工具的引用。
  4. RMI 的URL以rmi:开头,后接域名或IP地点(host),紧接着是端标语(port),最后是处事名(service)。

如:rmi://regserver.mycompany.cmo:99/central_warehouse

假如我们是在当地宣布RMI处事,那么host就是“localhost”,另外RMI默认的端标语是“1099”,虽然我们也可以自行配置,只要不与其他端口一再即可。 service现实上是基于统一个host与port下独一的处事名。

宣布RMI处事:

长途要领挪用RMI详解,和RPC的思绪很相似

运行功效:

  1. Constructing server implementation 
  2. Binding server implementation to registry 
  3. Waiting for invocations from clients ... 
  1. 第20行只需提供一个port,就在JNDI中建设了一个注册表。
  2. 第21行通过bind要领绑定了RMI地点与RMI处究竟现类。
  3. 执行这个要领后,相等于自动宣布了RMI处事。接下来要做的工作就是写一个RM客户端挪用已宣布的RMI处事。

4、挪用RMI处事

长途要领挪用RMI详解,和RPC的思绪很相似

运行功效:

  1. RMI registry binding: 
  2. mate7:3700.0 
  1. 处事挪用只必要知道两个对象:1、RMI哀求路径;2、RMI接口名
  2. 第15行,这里用的是接口名Warehouse,而不是实现类。必然不能RMI接口的实现类,不然就是当地挪用了。
  3. 查察运行功效,我们知道这次DEMO展示的长途挪用乐成了。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读