Java RMI和远程文件访问

时间:2011-01-31 23:47:52

标签: java rmi

我刚刚开始学习Java的RMI,并且相信我理解了这个过程,客户端发送方法请求和参数,服务器执行计算并返回返回结果。

但服务器是否在本地执行方法中的所有内容?

具体来说,如果在方法中读取文件,我认为这是由服务器执行的吗?

如果是这种情况,该方法是否有任何方法可以从客户端专门访问资源(例如客户端的System.out?)

3 个答案:

答案 0 :(得分:2)

  1. 如果在本地,你的意思是在服务器(虚拟)机器上,答案是肯定的。
  2. 不,只有作为参数显式传递给远程方法的值才可访问。并且您只能传递Serializable的对象,而流通常不会传递。
  3. 话虽如此,客户端也可以充当服务器,导出自己的远程对象,这些对象可以传递给(其他)服务器,然后服务器可以使用该远程对象来回调客户端。

答案 1 :(得分:1)

如果我理解你的问题,我会说是的,你是对的。根据定义,(远程)方法在服务器端运行。客户端只保存一个虚假对象(代理或存根),它与服务器建立连接,传递参数并为您获取返回值。

考虑在不同机器上运行的客户端和服务器,服务器无法知道有关客户端资源的任何信息,除非客户端将自身充当服务器。

问候

答案 2 :(得分:1)

您可以使用rmiio轻松地通过rmi流式传输数据。我说我非常怀疑你会想用System.out做到这一点。