1

当我运行一个使用 Java RMI 的客户端-服务器应用程序时,我注意到即使我没有在我学会的命令提示符中启动“rmiregistry”,它似乎仍然可以工作。我注意到的程序差异:

    try { 
        LocateRegistry.getRegistry(1099).list();
        System.out.println("rmiregistry WAS started before running the application"); } 
    catch (RemoteException e) {
        LocateRegistry.createRegistry(1099);
        System.out.println("rmiregistry WAS NOT started before running the application"); }

任何有知识的人都可以弄清楚发生了什么以及它如何影响程序?

4

1 回答 1

2
LocateRegistry.getRegistry(1099).list();
System.out.println("rmiregistry WAS started before running the application"); }

该消息具有误导性。getRegistry()不执行任何网络通信,因此它成功的事实并不是注册表正在运行的有效指示。只有使用的结果getRegistry()才能告诉你。

你从头到尾做这件事。您必须先尝试createRegistry()调用,如果失败,则如果注册表已在运行,则getRegistry() call.createRegistry()`失败,否则将成功。

于 2013-12-02T23:11:08.810 回答