当我运行使用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"); }
任何有知识的人都可以理清正在发生的事情以及它如何影响该计划?
答案 0 :(得分:2)
LocateRegistry.getRegistry(1099).list();
System.out.println("rmiregistry WAS started before running the application"); }
该消息具有误导性。 getRegistry()
不执行任何网络通信,因此它成功的事实并不是注册表正在运行的有效指示。只有使用 getRegistry()
的结果才能告诉你。
你正在做这件事。您必须先尝试createRegistry()
调用,如果 失败,如果注册表已在运行,则getRegistry() call.
createRegistry()`将失败,如果不是,那就成功。