Comment fermer rmiregistry en cours d'exécution sur un port particulier?

je travaille sur Java RMI. J'ai peu de problèmes avec l'exécution de mon rmiregistry sur le port 2028 car j'ai déjà utilisé celui-ci pour exécuter mon programme de test. Je peux exécuter mon programme en utilisant un autre port, mais je voudrais savoir, comment fermer rmiregistry en cours d'exécution sur un port particulier ?

7
demandé sur Gray 2011-12-05 17:24:35

4 réponses

si vous voulez faire cela dans la programmation, nous faisons quelque chose comme:

// 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);
}

voici le code complet pour notre classe de JMXServer . Nous avons des problèmes de création de 2 de ces logiciels et de les désinscrire complètement, donc nous nous assurons d'exécuter nos tests unitaires sur différents ports.

j'utilise ce code dans mon forfait client/service SimpleJmx JMX.

10
répondu Gray 2016-07-20 18:52:52

après tant de tracas, je me rends compte que rmiregistry fonctionne en arrière-plan de shell. Donc, tout ce que nous avons à faire fermer d'abord l'amener au premier plan, puis le fermer. Et cela a fonctionné.

BTW pour l'amener à l'avant-plan, tapez simplement:

% fg

et ensuite de fermer le type:

Ctrl + c

C'est ça. Merci beaucoup tout le monde qui a essayé de m'aider.

8
répondu slonkar 2013-09-17 20:54:22

si vous exécutez rmiregistry à partir de l'interpréteur de commandes, essayez de le fermer avec:

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

Je ne suis pas si frais avec les commandes shell, mais j'espère que vous comprenez l'idée.

1
répondu Tudor 2011-12-05 13:47:49

si le registre rmi utilise déjà le port et que vous souhaitez redémarrer un service sans utiliser un autre port. Vous pouvez essayer le code ci-dessous

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
répondu kayfun 2014-04-10 13:14:04