У меня есть сервер rmi на коробке с двумя общими интерфейсами. Когда клиент подключается, он всегда возвращает неправильный IP-адрес в UnicastServerRef2 [liveRef: [endpoint:[192.x.x.x:xxxx
.... Соединение с клиентом переходит на другой интерфейс с ip 10.x.x.x
. Кто-нибудь знает, как это решить? Я не хочу указывать ip при привязке заглушки. Он работает тогда, но я бы хотел, чтобы он прослушивал все интерфейсы (0.0.0.0
).Укажите адрес конечной точки RMI при наличии двух интерфейсов
Если я указываю java.rmi.server.hostname=myhostname
и использовать RMIServerSocketFactory
создать ServerSocket[addr=myhostname/10.x.x.x,localport=xxxx]
, она по-прежнему возвращает 192.x.x.x
адрес клиенту в качестве удаленной конечной точки. Довольно странно, у меня есть два объекта UnicastRemoteObjects
на разных портах, и один из них возвращает правый адрес, а другой нет.
Любые идеи, как заставить его вернуть конечную точку с интерфейсом ip интерфейса, к которому было выполнено соединение?
Спасибо за ваш ответ! Но я хотел бы автоматически вернуть ip интерфейса, который использует клиент. Так что у меня могут быть клиенты, которые используют локальный сетевой адрес, а другие - через Интернет. Или, по крайней мере, я хотел бы указать только имя хоста, установленное в/etc/hosts, без необходимости явно устанавливать ip в приложении. – morja
Хорошо, на самом деле это работает с именем хоста. Проблема заключалась в том, что я установил java.rmi.server.hostname перед привязкой к заглушке, но после создания UnicastRemoteObject. Спасибо за Ваш ответ! – morja
Хм, нет, извините, его все еще не работает. По какой-то причине он работает для одного соединения, но другой по-прежнему получает неправильный IP-адрес. – morja