在不启动rmiregistry的情况下运行java应用程序

时间:2013-12-02 20:17:04

标签: java rmi rmiregistry

当我运行使用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"); }

任何有知识的人都可以理清正在发生的事情以及它如何影响该计划?

1 个答案:

答案 0 :(得分:2)

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

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

你正在做这件事。您必须先尝试createRegistry()调用,如果 失败,如果注册表已在运行,则getRegistry() call. createRegistry()`失败,如果不是,那就成功。