2011-04-14 105 views

回答

24

本质上,RMI注册表是服务器注册它提供的服务的地方,也是客户查询这些服务的场所。见Introduction to Java RMI。摘录:

图1显示了客户端在使用RMI时所做的连接。首先,客户端必须联系RMI注册中心,并请求服务的名称。开发人员B不会知道RMI服务的确切位置,但他知道足以联系开发人员A的注册表。这将指向他想要调用的服务的方向。

+1

这里也是一个有趣的地方了解更多关于Java RMI:http://docs.oracle.com/javase/tutorial/rmi/index.html – LuckyLuc 2013-10-26 20:05:01

+0

@LuckyLuc同意。不仅是一个有趣的地方,而且是一个更好的地方。任何互联网垃圾不应该在官方引用之前引用,当然也不要超过RMI规范等规范引用。 – EJP 2015-09-12 10:06:56

+0

因此,每个程序只有一个RMI注册表,但可以有多个服务器。那是对的吗? – CodyBugstein 2015-10-01 03:46:41

8

RMI注册表作为RMI服务器和客户端之间的代理。服务器将其服务注册到注册表中 - 因此RMI注册表可以充当许多服务器/服务的“目录”。客户端不需要知道单个服务器的位置,并且可以在RMI注册表中查找它所需的服务。注册表是一个命名目录,它向客户端返回适当的句柄以调用其上的方法。

谷歌周围,有很多关于RMI的信息可用。

2

Java的远程方法调用(RMI)注册本质上是一个目录服务。

远程对象注册表是引导程序命名服务,由同一主机上的RMI服务器用来将远程对象绑定到名称。本地和远程主机上的客户端可以查找远程对象并进行远程方法调用。(Documentation

您可以使用RMI或JNDI使用rmi注册表远程绑定和查找对象。

这是一个众所周知的代理设计模式的用例。 RMI服务器在RMI注册表上注册对象(基本上是存根)。远程客户端查找这些存根并调用其上的方法。在场景的后面调用方法,它的参数被序列化并发送到具有实现的实际RMI服务器。 RMI服务器(骨架代码)反序列化请求调用实际方法,收集结果,将其反序列化并将其发送回客户端(存根)。存根反序列化结果并将其返回给调用此方法的代码。