UnicastRemoteObject类的构造函数是做什么的

时间:2015-04-18 16:52:18

标签: java rmi

我对UnicastRemoteObject类有一些疑问。 请使用以下代码:

public class MaxImpl extends UnicastRemoteObject implements Max{
public MaxImpl () throws RemoteException {}
    @Override
    public int getMax(int[] A) throws RemoteException {
     // ...
        return max;
    }
public static void main(String[] args) {
        try {
            LocateRegistry.createRegistry(1099);
            MaxImpl max  = new MaxImpl();
            Naming.rebind("maximum", max);
        } catch (RemoteException ex) {
            System.out.println(ex.getMessage());
        } catch (MalformedURLException ex) {
            System.out.println(ex.getMessage());
        }
    }

}

以下陈述的作用如下:

MaxImpl max  = new MaxImpl();
  1. 生成存根。
  2. 生成存根并创建一个远程对象以便它可以接收 从远程客户端调用其远程方法。
  3. 以上代码无限期执行,为什么?我想有一个循环:

    while(true){  ServerSocket server = ...; }
    

1 个答案:

答案 0 :(得分:1)

  

生成存根。

没有

  

生成存根并创建一个远程对象,以便它可以从远程客户端接收其远程方法的调用。

没有

导出远程对象,包括:

  1. 打开ServerSocket
  2. 启动一个侦听该套接字的线程。
  3. 创建包含IP地址,(1)处使用的端口和远程对象标识符的存根对象。
  4. 请注意(1(和(2)可以使用相同的端口在远程对象之间共享,因此可能不会像上面那样精确地发生。

    现在(2)处的线程的存在将阻止JVM退出。