У меня странная проблема с RMI.Сначала я запустил сервер, затем я запустил клиент.В первый раз я могу подключиться от клиента к серверу.Тогда я останавливаю клиента.И я пытаюсь повторно подключить клиента.Я могу получить заглушку сервера, однако когда я вызываю метод из заглушки, я получаю кучу исключений «Соединение отказано».У меня не включен брандмауэр.
Мой код для настройки Сервера
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