1

这似乎是一个简单的问题,但我找不到明确的答案:

假设我在本地无防火墙网络上有三台服务器,其中一台是注册表(R),另外两台是客户端(A 和 B),客户端 A 和 B 都连接到注册表。

客户端 A 通过注册表获得对 B 上导出对象的引用并调用一个方法——该方法调用是否通过注册表?即,如果 A 将一个大字节数组作为参数传递给 B,是否需要通过 R 进行 2 跳,或者注册表是否告诉 A B 可以直接通信?

4

1 回答 1

2

不,从客户端到服务器的调用不通过 RMI 注册表。注册表仅用于查找对服务器的引用。对服务器的后续调用直接到那里。

RMI 注册中心实际上只不过是一个 RMI 服务器本身,它接受并存储向它注册的服务器的远程存根。它为不知道在哪里找到服务器的客户端提供了一个已知的入口点。它将 RMI 存根交还给客户端,然后客户端通过该存根直接与服务器对话。

于 2012-05-16T16:22:44.097 回答