我需要编写一个RMI客户端/服务器应用程序,该服务器在不同的进程中运行。当我在同一个进程中运行我的代码时,一切正常,但在尝试使用
在新进程中运行服务器代码时ProcessBuilder pb = new ProcessBuilder(
"java",
"-cp",
"bin",
"server.CodeboxServerImpl");
我从客户端抛出一个未绑定的异常。
我已经启动了rmiregestry,并且在我正在使用的客户端和服务器上的代码中
Registry reg = LocateRegistry.getRegistry("localhost");.
我错过了什么吗?
答案 0 :(得分:0)
您应确保拥有started your rmi registery process。
如果RemoteException
出现问题,您将抛出LocateRegistry.getRegistry
,而不是NotBoundException
。
如果您没有将服务器中的存根绑定到注册表,则可能会获得NotBoundException
。在您的服务器代码中,您可以使用名称调用reg.bind
将ProcessBuilder
stub
绑定到注册表。然后,客户端可以从注册表中获取该名称的stub
。
请阅读here以获取更多详细信息。