当我运行使用 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.getRegistry(1099).list();
System.out.println("rmiregistry WAS started before running the application"); }
该消息具有误导性。 getRegistry()
不执行任何网络通信,因此它成功的事实并不能有效表明注册表正在运行。只有使用getRegistry()
的结果才能告诉您这一点。
您正在从后到前执行此操作。您必须首先尝试 createRegistry()
调用,如果失败,则执行 getRegistry() 调用。
createRegistry()` 将会 如果注册表已在运行,则失败;如果未运行,则成功。
关于java - 运行java应用程序而不启动rmiregistry,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20337014/