Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这似乎是一个简单的问题,但我找不到明确的答案:
假设我在本地无防火墙网络上有三台服务器,其中一台是注册表(R),另外两台是客户端(A 和 B),客户端 A 和 B 都连接到注册表。
客户端 A 通过注册表获得对 B 上导出对象的引用并调用一个方法——该方法调用是否通过注册表?即,如果 A 将一个大字节数组作为参数传递给 B,是否需要通过 R 进行 2 跳,或者注册表是否告诉 A B 可以直接通信?
不,从客户端到服务器的调用不通过 RMI 注册表。注册表仅用于查找对服务器的引用。对服务器的后续调用直接到那里。
RMI 注册中心实际上只不过是一个 RMI 服务器本身,它接受并存储向它注册的服务器的远程存根。它为不知道在哪里找到服务器的客户端提供了一个已知的入口点。它将 RMI 存根交还给客户端,然后客户端通过该存根直接与服务器对话。