Java RMI注册表查找时出现的JRMI调用疑问
问题解答
这个JRMI, Call调用是什么?它属于远程方法调用吗?
答案是肯定的,这个JRMI, Call就是**Naming.lookup内部触发的远程方法调用**,具体是对RMI注册表服务的lookup方法调用,原因如下:
- RMI注册表本身就是标准的RMI服务,它实现了
java.rmi.registry.Registry接口,对外暴露了lookup、bind、rebind等远程方法。 - 当你在ChatServer中调用
Naming.lookup()时,这个方法的底层逻辑是:先建立与RMI注册表的TCP连接,获取注册表的远程对象引用,然后自动发起对注册表lookup方法的远程调用——这就是你抓包看到的JRMI, Call报文对应的操作。 - 你虽然没有手动编写显式的远程方法调用代码,但
Naming.lookup作为RMI提供的工具方法,已经帮你封装了和注册表交互的远程调用流程,所以这个JRMI, Call确实是一次完整的远程方法调用。
补充说明:三次握手完成TCP连接建立后,RMI协议会先完成版本协商等初始化步骤,之后就会发送这个lookup方法的调用请求,对应你看到的报文序列。
内容的提问来源于stack exchange,提问作者Thxmsa0192
相关产品推荐
相关产品推荐

