Java 使用UnicastRemoteObject.exportObject的返回值与导出的对象之间是否存在差异?
导出对象时,我发现Java 使用UnicastRemoteObject.exportObject的返回值与导出的对象之间是否存在差异?,java,rmi,Java,Rmi,导出对象时,我发现 LocateRegistry.createRegistry(1099); ObjectToExport obj = new ObjectToExport(); UnicastRemoteObject.exportObject(obj, 1099); Naming.rebind("ObjectName", obj); 还有这个 LocateRegistry.createRegistry(1099); ObjectToExport obj = new ObjectToExpor
LocateRegistry.createRegistry(1099);
ObjectToExport obj = new ObjectToExport();
UnicastRemoteObject.exportObject(obj, 1099);
Naming.rebind("ObjectName", obj);
还有这个
LocateRegistry.createRegistry(1099);
ObjectToExport obj = new ObjectToExport();
Naming.rebind("ObjectName", UnicastRemoteObject.exportObject(obj, 1099));
工作。在第一个示例中,我不使用exportObject
的返回值,在第二个示例中,我使用。这两种导出对象的方法有区别吗?
API只说返回值是
远程对象存根
在导出步骤中没有区别,但是您也绑定了对象,在这个步骤中有区别。在第一步中,您传递的是实际对象;第二种是存根。然而,RMI的语义是,导出的远程对象作为它们自己的存根传递给远程方法,因此在注册表中的实际效果是相同的