我第一次尝试使用RMI注册表进行远程调用。我已经编写了接口和实现它的类。在尝试调用它时遇到了问题。我已经在我的windows机器中通过给start rmiregistry
启动了rmiregistry,它打开了一个新窗口。
客户端prg看起来像:
String host = "172.27.49.199:1099";
try {
System.out.println(LocateRegistry.getRegistry());
Registry registry = LocateRegistry.getRegistry(host,0);
Details stub = (Details) registry.lookup("Hello");
String response = stub.Name();
System.out.println("response: " + response);
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
我对host
需要给定的值感到困惑。
我试过给予:
(a) http://localhost
(b) http://localhost:1099
它离开java.net.UnknownHostException: http://localhost:1099
。
更新:
在将主机更改为My_Sys_IP后,我失去了java.net.UnknownHostException
,但最终得到了Client exception: java.rmi.NotBoundException: Details
我不知道你为什么感到困惑。host
是主机名或IP地址。Javadoc没有提到任何关于使用URL的内容。
它也没有说你可以把零作为端口号。你不能。如果你不知道这个参数应该是什么,就省略它。