Как передать удаленную ссылку на экспортированный объект RMI-IIOP

Допустим, я хочу передать удаленную ссылку следующего экспортированного объекта 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 предусматривает, что экспортированные удаленные объекты передаются как их собственные заглушки.

Другие вопросы по тегам