java.rmi.ConnectException: соединение отказало в хосте, когда сервер RMI является дочерним процессом клиента RMI - PullRequest
1 голос
/ 26 октября 2011

У меня есть две программы на 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 зарегистрировал удаленный объект, и, следовательно, я получаю это исключение.

Родительские дочерние отношения не имеют отношения к этой проблеме.Так получилось, что причиной возникновения проблемы был порядок, в котором создавались эти классы.

1 Ответ

0 голосов
/ 26 октября 2011

так получилось, что мне нужна клиентская java-программа для порождения сервера и последующего подключения к нему

Почему?В этом случае вам даже не нужен RMI, не говоря уже о второй JVM.Просто создайте удаленный объект в текущей JVM и вызовите его методы напрямую.

Сам RMI совершенно не знает об отношениях родитель / потомок, поэтому я бы не стал заниматься этим вопросом.Строка исключения «Соединение отказано в хосте: 0: 0: 0: 0: 0: 0: 0: 1» крайне подозрительна.Где вы взяли заглушку для удаленного объекта?Вот откуда исходит цель подключения.

...