Запуск RMI-сервера на ноутбуке с Ubuntu - PullRequest
2 голосов
/ 12 апреля 2010

Я написал сервер-клиентское приложение rmi и использую ноутбуки MacOsX и Ubuntu для их тестирования.

Когда я запускаю rmiregistry и сервер на MacOsX, я вижу подробности в netstat, что порт 1099 открыт и используется. Тогда, если я попытаюсь использовать RMI, используя клиент с ноутбука Ubuntu - он работает нормально.

Тем не менее, когда я пробую все наоборот: Запустите rmiregistry и сервер в Ubuntu, я не вижу подробностей в netstat о порте 1099. И при использовании клиента от Macos я не могу подключиться к нему и получить следующее исключение:

Received Exception: 
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: 
java.net.ConnectException: Operation timed out

Что происходит после того, как произошел Naming.lookup (поэтому поиск прошел хорошо, но сам RMI - нет).

Похоже, что rmiregistry в Ubuntu перенаправляет моего клиента для подключения 127.0.1.1 вместо внешнего IP-адреса сервера, от которого он отказывается.

Что может быть причиной этого?

1 Ответ

5 голосов
/ 12 апреля 2010

Найдено 2 решения, не знаю, какое из них правильное:

  1. Я проверил / etc / hosts на компьютере с Ubuntu и увидел, что 127.0.1.1 сопоставлен с именем ubuntu-laptop, поэтому я переписал его на свой правильный внешний IP.

После этого все заработало. Однако я подумал, что не очень хорошая идея иметь статический IP-адрес (потому что, если он будет динамически меняться?)

  1. Таким образом, решение этой проблемы заключается в указании имени хоста при запуске сервера с помощью свойства rmi.server.hostname. Так будет примерно так:

java -Djava.rmi.server.hostname=192.168.1.35 server 192.168.1.35

После этого - работает.

...