我不确定远程对象的 stub 实例是在哪里创建的。是通过调用Naming.bind在rmiregistry中注册时创建的吗?这是有道理的,因为注册表也是通过 RMI 调用的。
但是 stub 不能也通过调用UnicastRemoteObject.exportObject来创建吗? ?
这个特定的代码片段from oracle让我困惑:
Compute engine = new ComputeEngine();
Compute stub = (Compute) UnicastRemoteObject.exportObject(engine, 0);
String name = "Compute";
Registry registry = LocateRegistry.getRegistry();
registry.rebind(name, stub);
使用 Naming.bind 时,我需要传递 stub 或远程对象吗?
最佳答案
stub 是
- 导出远程对象时创建
- 当您将远程对象作为远程方法参数或结果传递时,替换远程对象,例如绑定(bind)或在注册表中查找时。
When using
Naming.bind()
do I need to pass a stub or a remote object?
要么。这并不重要,因为 (2)。
关于java - RMI中stub在哪里实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39166039/