使用 UnicastRemoteObject.exportObject 的 return 值和导出的对象有区别吗?

Is there a difference between using the return value of UnicastRemoteObject.exportObject and the exported object?

导出对象时,我发现这两个

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 的 return 值,而在第二个中我使用了。这两种导出对象的方式有区别吗? API 仅表示 return 值是 remote object stub.

导出步骤没有区别,但你同时绑定了对象,这一步有区别。在第一步中,您要传递实际对象;第二,存根。 然而RMI 的语义是将导出的远程对象作为它们自己的存根传递给远程方法,因此在注册表中的实际效果是相同的。