RMI调用过程

1.客户端发起方法调用: 客户端希望调用远程服务器对象上的方法。
2. 存根程序(Stub):客户端的方法调用首先通过存根程序,它类似于远程服务器对象的代理。存根程序将方法调用封装为网络消息,并将其发送给远程服务器对象。
3. 远程引用层(Remote Reference Layer): 它负责处理通信语义,并管理与远程对象之间的通信。它决定将方法调用发送到哪个服务器上,可以是单一的服务器或者多个服务器。
4. 传输层(Transport Layer):在客户端和服务器端之间管理实际的连接。它负责将经过处理的方法调用和数据包发送到服务器主机,并跟踪哪些远程对象可以接受方法调用。
5. 服务器端:在服务器端,传输层接收到方法调用,然后通过骨架(Skeleton)传递给实际的服务器对象。
6. 骨架(Skeleton):骨架是远程服务器对象的代理。它接收传入的方法调用,并实际执行调用服务器对象的方法。
7.方法执行和返回: 服务器对象执行方法并获取返回值。返回值经过骨架、服务器端传输层,最终到达客户端的传输层。
8.返回值传递给存根程序: 最后,返回值经过传输层和远程调用层返回到存根程序,存根程序将返回值提供给客户端的代码使用。

客户端                       服务器端
+--------+                      +-----------+
|            |    发送请求     |               |
|            |   ------------->  |                |
|   Stub  |                       | Skeleton |
|            |  <-------------   |                |
|            |    接收结果    |                 |
+--------+                      +------------+

举个例子

  1. 客户端想得到书(A城市): 你在A城市,想要这本书。

  2. 在A城市的代理(快递员): 你找到了一家快递公司,他们会帮你寄送书。你把你的请求给了这家快递公司。

  3. 决定送到B城市的途径: 快递公司会决定把这本书寄给B城市的哪家分店。他们会确保书能够被送到正确的地方。

  4. 在路上的书: 书被放进了快递车,经过了公路、高速公路,最终到达了B城市的分店。

  5. 在B城市的代理(快递员): 在B城市的快递员接收到了这本书,并准备把书送到你所需要的地方。

  6. 书到达你手中: 最后,这本书从快递公司的分店送到了你手中。

A城市就像是客户端,B城市就像是服务端。快递公司代表了RMI的各个层次,从决定送到哪里、如何送到那里,直到书最终到达客户手中。这个过程类似于RMI调用中涉及的客户端发起请求,经过网络传输,最终服务器端执行操作并将结果返回给客户端的过程。

 

stub和Skeleton是两个代理人,分别在客户端电脑上和Server电脑上做代理,找到我们想用的资源

 

RMI的时序图:

 参考:xinghun_4_python,linux,java-CSDN博客

  • 35
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值