【发布时间】:2010-12-31 10:16:26
【问题描述】:
我对 RMI 有一个奇怪的问题。首先,我启动了服务器,然后我启动了客户端。第一次,我可以从客户端连接到服务器。然后我停止客户端。我尝试重新连接客户端。我可以获取服务器存根,但是当我从存根调用方法时,我得到了一堆 "Connection Refused" 异常。我没有打开防火墙。
我的服务器设置代码
public Server(String name, int port) {
try {
LocateRegistry.createRegistry(port);
ServerModel server = new ServerModel();
String serverStr = "rmi://localhost:" + port + "/" + name;
Naming.rebind(serverStr, server);
} catch (MalformedURLException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
} catch (RemoteException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
以及设置客户端的代码
public Client(String serverName, int port) throws RemoteException {
controller = new ClientController();
view = new MainView();
ClientRegistry.setData(ClientConstant.FRONT_CONTROLLER, controller);
try {
String serverStr = "rmi://localhost:" + port + "/" + serverName;
ServerInterface serverStub = (ServerInterface) Naming.lookup(serverStr);
ClientRegistry.setData(ClientConstant.STUB, serverStub);
view.setFrontController(controller);
view.display();
} catch (Exception ex) {
// Show error if server is not available
JOptionPane.showMessageDialog(null, "Server is not available", "Error", JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}
还有例外
java.rmi.ServerException:服务器线程发生RemoteException;嵌套异常是: java.rmi.ConnectException:连接拒绝主机:192.168.0.104
【问题讨论】: