У меня есть две программы на Java - RMIServer и RMIClient.Все просто работает, как и ожидалось, если я запускаю их как два отдельных вызова Java.То есть
$ java -cp someclasspath server.mainserverclass
&
$ java -cp someclasspath client.mainclientclass
Но в моем проекте так получилось, что мне нужна клиентская Java-программа для порождения сервера и последующего подключения кЭто.Я использовал метод runtime.exec()
и ProcessBuilder для порождения экземпляра сервера, но когда я это сделал, я получил следующее:
.Exception in thread "main" java.rmi.ConnectException:
Connection refused to host: 0:0:0:0:0:0:0:1; nested exception is:
Но интересная часть заключается в том, что если вручную убить экземпляр RMIClient, то RMIServerстановится осиротевшим (parent - pid:1
), а затем, если я запускаю RMIClient, я могу нормально подключиться к потерянному серверу RMI!
Так что, похоже, когда RMIServer и RMIClient имеют отношения родитель-потомокЯ не могу подключиться через RMI.
Любая помощь / указатели очень ценятся.
***** ОТВЕТИТЬ ***** (Очевидно, у меня недостаточно репутации, чтобы ответитьмой собственный вопрос: -)
Это была моя ошибка.Классы RMIServer и RMIClient были созданы в двух отдельных потоках Java.Класс RMIClient для созданного экземпляра до , RMIServer зарегистрировал удаленный объект, и, следовательно, я получаю это исключение.
Родительские дочерние отношения не имеют отношения к этой проблеме.Так получилось, что причиной возникновения проблемы был порядок, в котором создавались эти классы.