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