假设我有以下代码:
class Foo implements FooRemote{
private String string;
}
class Boo implements BooRemote{
/**
* This method is directly called from RMI client only
*/
public Foo getMyFoo(){
Foo foo=new Foo();
UnicastRemoteObject.exportObject(foo,somePort);
return foo;//the reference is returned directly to client
}
}
如您所见,我没有将无论如何添加到注册表中,例如我没有这个:
registry.rebind(url, fooStub);
我是否可以100%确定在所有RMI客户端中,对创建的foo
的每个实例的访问权限只有一个客户端(谁调用该方法)并且没有其他人可以获得对此对象的引用(通过注册或其他方式)并使用它?
P.S。请在答案yes
或no
中加入。
答案 0 :(得分:0)
我是否可以100%确定在所有RMI客户端中,对创建的foo的每个实例的访问权限只有一个客户端(谁调用该方法)并且没有其他人可以获得对此对象的引用(通过注册表或不知何故)并使用它?
是。它不在注册表中,因为你没有把它放在那里。唯一可见的引用是您返回给客户端的引用。