使用 RMI 机制启动客户端-服务器应用程序时,会引发异常java.rmi.ConnectException: Connection refused to host
。
该程序本身使用四个源文件:
AddServerIntf.java
import java.rmi.Remote;
import java.rmi.RemoteException;
interface AddServerIntf extends Remote {
double add(double d1, double d2) throws RemoteException;
}
AddServerImpl.java
import java.rmi.*;
import java.rmi.server.*;
public class AddServerImpl extends UnicastRemoteObject implements AddServerIntf {
public AddServerImpl() throws RemoteException {
}
public double add(double d1, double d2) throws RemoteException {
return d1 + d2;
}
}
AddServer.java
import java.rmi.*;
public class AddServer {
public static void main(String args[]) {
try {
AddServerImpl addServerImpl = new AddServerImpl();
Naming.rebind("AddServer", addServerImpl);
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
添加客户端.java
import java.rmi.*;
public class AddClient {
public static void main(String args[]) {
try {
String addServerURL = "rmi://" + args[0] + "/AddServer";
AddServerIntf addServerIntf = (AddServerIntf) Naming.lookup(addServerURL);
System.out.println("The first number is: " + args[1]);
double d1 = Double.valueOf(args[1]).doubleValue();
System.out.println("The second number is: " + args[2]);
double d2 = Double.valueOf(args[2]).doubleValue();
System.out.println("The sum is: " + addServerIntf.add(d1, d2));
} catch (Exception e) {
System.out.println("Exception: " + e);
}
}
}
如何解决这个问题呢?
在这种情况下,
java.rmi.ConnectException: Connection refused to host
可能会发生异常,因为 RMI 注册表未在服务器计算机上运行。解决方案
使用以下命令启动 RMI 注册表:
start rmiregistry
.让我们在不使用此命令的情况下进行检查:
我们启动服务器:
现在我们使用命令检查
start rmiregistry
:成功重启服务器: