【问题标题】:Run java application without starting rmiregistry在不启动 rmiregistry 的情况下运行 java 应用程序
【发布时间】:2013-12-02 20:17:03
【问题描述】:

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

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

【问题讨论】:

  • 因为可以在代码中完成,所以不需要命令行启动。通常从不使用命令行提示符。
  • 你的意思是“LocateRegistry.createRegistry(1099);”如果 rmiregistry 尚未运行,则启动它?
  • 是的,如果注册表已经在运行,它会失败。

标签: java rmi rmiregistry


【解决方案1】:
LocateRegistry.getRegistry(1099).list();
System.out.println("rmiregistry WAS started before running the application"); }

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

你是从头到尾这样做的。您必须先尝试createRegistry() 调用,如果that 失败,那么如果注册表已经在运行,那么getRegistry() call.createRegistry()` 失败,如果它成功则成功不是。

【讨论】:

    最近更新 更多