Как решить, какой физический интерфейс должен использовать транспортный уровень RMI? - PullRequest
0 голосов
/ 21 февраля 2012

Когда я использую удаленную ссылку с клиента, все в порядке.Если я пытаюсь использовать эту удаленную ссылку из simu, связь не удалась, потому что сервер пытается использовать IP из eth0.Что беспокоит меня, так это то, что об исключении сообщается на симуляторе.Я думаю, что что-то пропустил?

[EDIT] Simu предоставляет следующее исключение:

java.rmi.ConnectIOException: исключение, создающее соединение с eth0_IP;

вложенное исключение: java.net.SocketException: сеть недоступна

Network Configuration

1 Ответ

1 голос
/ 21 февраля 2012

Вам необходимо установить свойство java.rmi.server.hostname , чтобы сообщить Реестру RMI, какое имя хоста или IP-адрес возвращать в его URL-адресах RMI.

По умолчанию используется IP-адрес первогоинтерфейс в системе, который объясняет, почему он работает только через eth0.

Так что вам понадобится что-то вроде:

String ipAddress = "10.1.2.3"; //IP address of eth1
System.setProperty("java.rmi.server.hostname",ipAddress);

или

String hostname = "myserver"; //hostname that resolves for client and simu
System.setProperty("java.rmi.server.hostname",hostname);
...