Как закрыть rmiregistry, работающее на конкретном порту? - PullRequest
8 голосов
/ 05 декабря 2011

Я работаю на Java RMI.У меня небольшая проблема с запуском моего rmiregistry через порт 2028, так как я уже использовал его для запуска своей тестовой программы.Я могу запустить свою программу, используя другой порт, но я хотел бы знать, как мы можем закрыть rmiregistry, работающее на перикулярном порту?

Ответы [ 4 ]

10 голосов
/ 05 декабря 2011

Если вы хотите сделать это в программировании, мы делаем что-то вроде:

// create the registry
Registry rmiRegistry = LocateRegistry.createRegistry(port);
...
// connect to it
JMXConnectorServer connector =
    JMXConnectorServerFactory.newJMXConnectorServer(url,
        new HashMap<String, Object>(),
        ManagementFactory.getPlatformMBeanServer());
// do stuff with it ...

// close the connection
if (connector != null) {
    connector.stop();
}
// deregister the registry
if (rmiRegistry != null) {
    UnicastRemoteObject.unexportObject(rmiRegistry, true);
}

Вот полный код для нашего класса JMXServer .У нас есть проблемы при создании двух из них и их полной отмене регистрации, поэтому мы обязательно запускаем наши модульные тесты на разных портах.

Я использую этот код в моем SimpleJmx пакете JMX-клиент / сервис.1010 *

8 голосов
/ 08 декабря 2011

После стольких хлопот я внезапно осознаю, что магистр работает на фоне раковины.Таким образом, все, что мы должны сделать - закрыть это, сначала вывести на передний план, а затем закрыть.И это сработало.

Кстати, чтобы вывести его на передний план, просто наберите:

% fg

и затем закройте его:

Ctrl + c

Вот и все.Большое спасибо всем, кто пытался мне помочь.

1 голос
/ 10 апреля 2014

Если реестр rmi уже использует порт и вы хотите перепривязать сервис без использования другого порта.Вы можете попробовать код ниже

Registry registry = null;
try {
    registry = LocateRegistry.createRegistry(1099);
} catch (ExportException ex) {
   registry = LocateRegistry.getRegistry(1099);
} catch (RemoteException ex) {
  Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
1 голос
/ 05 декабря 2011

Если вы запускаете rmiregistry из оболочки, попробуйте закрыть его с помощью:

Process p = 
Runtime.getRuntime().exec("ps -ef | grep rmiregistry | awk '{ print $2 }' | kill -9");

Я не новичок в командах оболочки, но надеюсь, вы поняли идею.

...