如何传递导出的 RMI-IIOP 对象的远程引用

Posted

技术标签:

【中文标题】如何传递导出的 RMI-IIOP 对象的远程引用【英文标题】:How to pass the remote reference of an exported RMI-IIOP object 【发布时间】:2015-02-22 15:13:49 【问题描述】:

假设我想将以下 RMI-IIOP 导出对象的远程引用传递给接收器(这是另一个远程对象):

public interface MyInterface extends Remote

    public void send(Receiver receiver);

    public String sayHello();



public class MyObject implements MyInterface

    public MyObject()
    
        PortableRemoteObject.exportObject(this); // I know I could extend PortableRemoteObject instead
    

    public void send(Receiver receiver)
    
        // which one is correct?

        /* 1. */ receiver.receive(this);
        /* 2. */ receiver.receive(this.toStub());
        /* 3. */ // other things, such as narrow...
    

    public String sayHello()  return "hello"; 

这是接收方法的实现:

public void receive(Remote remote)

    MyInterface myObjectRef = (MyInterface) PortableRemoteObject.narrow(remote, MyInterface.class);
    System.out.println(myObjectRef.sayHello());

目标是 sayHello() 方法的正确远程调用。

谢谢。

【问题讨论】:

【参考方案1】:

它们是等价的。 RMI 的语义规定导出的远程对象作为它们自己的存根传递。

【讨论】:

以上是关于如何传递导出的 RMI-IIOP 对象的远程引用的主要内容,如果未能解决你的问题,请参考以下文章

jsonrpc2 返回远程引用

微服务远程调用返回linkedhashMap对象

“共享内存模型”与“消息传递模型”

如何动态地将 id 传递给 Bootstrap 验证器规则的 url:远程用于相同的表单输入字段?

java RMI 如何返回远程对象的引用

Objective-C:如何将对象树传递给远程分布式对象?