我刚刚开始学习Java的RMI,并且相信我理解了这个过程,客户端发送方法请求和参数,服务器执行计算并返回返回结果。
但服务器是否在本地执行方法中的所有内容?
具体来说,如果在方法中读取文件,我认为这是由服务器执行的吗?
如果是这种情况,该方法是否有任何方法可以从客户端专门访问资源(例如客户端的System.out?)
答案 0 :(得分:2)
Serializable
的对象,而流通常不会传递。话虽如此,客户端也可以充当服务器,导出自己的远程对象,这些对象可以传递给(其他)服务器,然后服务器可以使用该远程对象来回调客户端。
答案 1 :(得分:1)
如果我理解你的问题,我会说是的,你是对的。根据定义,(远程)方法在服务器端运行。客户端只保存一个虚假对象(代理或存根),它与服务器建立连接,传递参数并为您获取返回值。
考虑在不同机器上运行的客户端和服务器,服务器无法知道有关客户端资源的任何信息,除非客户端将自身充当服务器。
问候
答案 2 :(得分:1)
您可以使用rmiio轻松地通过rmi流式传输数据。我说我非常怀疑你会想用System.out做到这一点。