1

在没有任何 Java RMI 经验的情况下,我有一个幼稚的问题,但在搜索互联网后仍然不确定答案。

问题:

在我看来,有两种情况:

场景1:从本地启动一个Java程序,在执行过程中,它从存储在远程机器上的类中调用一个方法,然后将该方法的类下载到本地机器,并继续执行。

场景2:从本地启动一个Java程序,在执行过程中,它从存储在远程机器上的类中调用一个方法,然后该方法将在远程机器上执行,并将结果发送回本地机器. (这需要类/对象转移吗?

Java RMI 使用哪一个?或者都不是?

来自RPC 的维基百科:“RPC 允许计算机程序使子程序或过程在另一个地址空间(通常在共享网络上的另一台计算机上)执行”,这似乎是第二种情况。

但是根据这篇论文Reducing Data Transfer during Remote Classloading in Java RMI,这似乎是第一种情况。

4

2 回答 2

1

使用 RMI 时,您基本上有一个在客户端和服务器之间共享的接口。服务器必须有一个实现,客户端不应该有这个实现。所以没有类加载或任何类型的客户端到服务器的逻辑传输,客户端完全不知道服务器接口的实现。

RMI 序列化并传输方法参数,然后执行服务器逻辑,将结果序列化并传输回客户端。

于 2013-10-24T17:07:26.260 回答
0

该方法将在远程机器上执行。为此,本地机器下载一个封装本地机器和远程机器之间通信的类。

于 2013-10-24T16:58:11.233 回答