Реестр rmi: лучший способ убедиться, что он запущен? - PullRequest
1 голос
/ 04 сентября 2010

Я что-то упускаю из-за разницы между

  1. запуск rmiregistry из командной строки (отдельно от любого процесса Java, на котором работает сервер, реализующий интерфейс RMI)
  2. с сервером вызова LocateRegistry.getRegistry()
  3. с сервером вызова LocateRegistry.createRegistry(Registry.REGISTRY_PORT)

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

Ответы [ 2 ]

2 голосов
/ 29 апреля 2016

Старая тема, но ...

man rmiregistry

говорит:

Методы класса java.rmi.registry.LocateRegistry используются для получить реестр, работающий на локальном хосте или локальном хосте и порту.

в противном случае у вас есть:

Методы на основе URL-адреса класса java.rmi.Naming работают с реестром и могут использоваться для поиска удаленного объекта на любом хосте и локальном хосте

Так что, я думаю, это важное отличие. Другое дело SecurityManager и политики.

1 голос
/ 04 сентября 2010

Вот как я это делал, не уверен, что это правильный путь, хотя: /. Мне также приходилось возиться с файлами политики, поэтому, если это также доставляет вам неприятности (часть диспетчера безопасности), вы должны создать файл политики и использовать его.

    try
            {
                try
                {
                    java.rmi.registry.LocateRegistry.createRegistry(1099);
                }

               catch (java.rmi.server.ExportException e) {  /*  */  }

                System.setSecurityManager(new java.rmi.RMISecurityManager());
                Registry registry = LocateRegistry.getRegistry("127.0.0.1",1099);
                registry.rebind(...);
            }

            catch (Exception e) {   /*  */  }
    }
...