Почему мой сервер RMI завершает работу, прежде чем клиент сможет подключиться?
После запуска программы для запуска на указанном порту, программа завершает работу, прежде чем клиент сможет подключиться к нему.
try {
StudentService obj = new StudentService();
Registry r = LocateRegistry.createRegistry(4200);
r.bind("localhost", obj);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AlreadyBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Это метод, который находится в классе StudentService, который был переопределен.
int multiply(int s, int b) throws RemoteException {
return s * b;
}
1 ответ
Решение
Из документации,
UnicastRemoteObject.exportObject экспортирует предоставленный удаленный объект для получения входящих вызовов удаленного метода на анонимный порт TCP и возвращает заглушку для удаленного объекта для передачи клиентам
Поэтому неудивительно, что ваша программа завершилась без прослушивания входящих соединений. Это должно работать.
try {
StudentService obj = new StudentService();
UnicastRemoteObject.exportObject(obj, 0);
Registry r = LocateRegistry.createRegistry(4200);
r.bind("localhost", obj);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AlreadyBoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}