RMI Java |Проблема с привязкой IP и проблема с Security Manager - PullRequest
0 голосов
/ 21 октября 2018

Проблема 1 решена!

Меня смущает следующая проблема: я делаю проект для моей школы о RMI на Java и помещаю объект в RMIRegistery

public static void bindObjectToRMIRegistry(Object obj,String name) throws AccessException, RemoteException {
    System.out.println("<< IN ServerHelper.bindObjectToRMIRegistry() >>");
    if(getRMIRegistru() != null) {
        System.out.println("Binding to registry: "+getRMIRegistru().toString());
        getRMIRegistru().rebind(name, (Remote) obj);
    }else {
        System.out.println("No registry to bind");
    }
}

В журнале я получаю следующее сообщение:

Привязка к реестру: RegistryImpl_Stub [UnicastRef [liveRef: [конечная точка: 192.168.56.1: 9005 , objID: [0: 0: 0, 0]]]]

Порт - хороший 9005, но IP - не очень хороший, и я не знаю, откуда он получает этот IP.Я также пытался установить HOST для rmi на мой локальный хост 192.168.1.2 , но он продолжает использовать этот адрес 192.168.56.1: 9005

Есть ли что-тоЯ отсутствует в конфигурациях?

Проблема 2

Registry registery = LocateRegistry.getRegistry("192.168.1.2",9005);
IHello hi = (IHello) registery.lookup("HI");

Я получаю: RemoteException error: ошибка необратимого возврата;Вложенное исключение: java.lang.ClassNotFoundException: Interfaces.IHello (без менеджера безопасности: загрузчик класса RMI отключен)

1 Ответ

0 голосов
/ 21 октября 2018

Скорее всего, у вас есть несколько сетевых интерфейсов, например, LAN, WLAN, виртуальные для обработки виртуальных машин и т. Д. Вы можете проверить это, запустив ipconfig (Windows) или ifconfig (Linux).

УкажитеПравильный IP при привязке RMI.Java не может угадать, какой вы хотите, если у вас есть несколько:

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