我对RMI很新,我决定尝试一下。我对exportObject(Object, int)
方法感到困惑。文档说:
导出远程对象以使其可用于接收传入 使用特定提供的端口调用。 使用导出对象 使用
RMISocketFactory
类创建 服务器套接字。
考虑以下简单示例:
public interface Client extends Remote {
void clientMethod() throws RemoteException;
}
public class ClientImpl implements Client {
public clientMethod() throws RemoteException {
System.out.println("clientMethod invoked");
}
}
Client stub = (Client) UnicastRemoteObject
.exportObject(new ClientImpl(), 56789); //<------ HERE
因此,我们创建了一个存根,并将其手动或通过VM
传输到另一个RmiRegistry
,这里无关紧要。
我很困惑“[...] 使用服务器套接字导出对象 [...]”
他们的意思是什么?
答案 0 :(得分:2)
ServerSocket
以侦听导出时指定的端口的传入连接。此端口可以在多个远程对象之间共享。RMISocketFactory
的陈述不正确。你在哪里读到的?该课程自1998年以来已经过时。因此,当我们将存根转移到另一个VM(VM 0)时,存根将保持与最初创建它的VM(VM 2)的套接字连接。
不,见上文。
VM 2依次维护服务器套接字以接受传入的方法调用。
正确。