Проблема привязки реестра rmi

Я запускаю RMI Regitry на виртуальной машине (под управлением Windows XP) с IP: 192.168.133.2 и пытаюсь привязать сервер RMI (под управлением другого vm XP IP: 192.168.133.3) с помощью этого кода:

Naming.rebind("//192.168.133.2/rmi.2", new RMI());

где

public class RMI extends UnicastRemoteObject

но я получаю это исключение:

    java.rmi.AccessException: Registry.Registry.rebind disallowed; origin /192.168.133.3 is non-local host

Я подумал, что реестр RMI не принимает ни один сервер RMI, который не работает на том же компьютере, на котором работает реестр RMI.

но как заставить этот реестр принимать мой сервер rmi?

PS: я использую JBuilder X в качестве IDE.

Я пытаюсь реализовать мобильный агент, который будет работать на некоторых серверах rmi, чтобы выполнить на них некоторую работу, и вернуть результаты на стартовую станцию, чтобы серверы RMI реализовали среду, в которой этот агент выполнял свою работу, и отправили ее следующему станция, которую он найдет через реестр

2 ответа

пытается привязать RMI-сервер (работает на другом vm XP IP: 192.168.133.3)

Остановись прямо там. Вы не можете сделать это. Вы можете привязать только сервер RMI к Реестру, работающему на том же хосте, что и агент, который выполняет связывание.

Обратите внимание, что это не обязательно означает тот же хост, на котором запущен удаленный объект. Например, клиент может искать удаленный реестр и связывать заглушки, полученные в локальном реестре. Но вы не можете ничего связать с удаленным реестром.

RMI не предоставляет какой-либо службы федеративного или распределенного именования.

RMI структурирован так, чтобы вы могли запускать реестр RMI на вашем сервере. Он размещает службы, к которым можно получить доступ через сеть, однако службы запускаются локально на этом сервере.

Предоставляемая служба должна быть запущена и "перепривязана" на сервере, а не в любой клиентской системе. Только локальный адрес.

Ваши клиенты должны обратиться к этому серверу...

Другие вопросы по тегам