Ich habe einen Weg des Abschaltens der Registrierung von jedem Prozess (und was das betrifft heruntergefahren alle gebundenen Prozesse, die in der Registrierung gebunden sind) gefunden
Jede der Schnittstellen, die und Sie möchten die schließlich entfernten erstreckt auch die folgende Schnittstelle erweitern töten soll:
public interface PIDSupplierInterface extends Remote {
String getPID() throws RemoteException;
}
jeden Server Klasse, die Sie mit diesem als Teil seiner Schnittstelle erstellen muss dann implementieren getpid(). Sie müssen dann die Prozess-ID zurückgeben. Google "getpids" für Windows, oder gehen Sie hier: www.jroller.com/santhosh/entry/get_current_java_process_id. Für Linux, wie ich es verstehe, ist es einfacher, die PID zu bekommen. Dann ist (unter Windows) Sie
String PID = myServer.getPID();
String[] a_command = { "taskkill", "/pid", PID };
Runtime.getRuntime().exec(a_command, envp, dir);
gehen, um die PID der Registrierung zu töten, selbst, zuerst, wenn Sie die Registrierung (programmatisch) starten, gehen Sie einfach
PIDSupplierInterface stub = PIDSupplierInterface)UnicastRemoteObject.exportObject(
new PIDSupplierServer(), 0);
reg.bind("regKiller", stub);
wo PIDSupplierServer eine Klasse die nur PIDSupplierInterface implementiert.
Dann, wenn Sie den RMI-Registry von jedem Prozess töten wollen, gehen Sie einfach
PIDSupplierInterface regProcess = (PIDSupplierInterface)reg.lookup("regKiller");
String regPID = regProcess.getPID();
String[] a_command = { "taskkill", "/pid", regPID };
Runtime.getRuntime().exec(a_command, envp, dir);
die reg wird von dem System verschwunden. Oder ist Ihre Frage aus irgendeinem Grund komplizierter? Alle Kommentare sind willkommen.
Das * result * von * prior * 'createRegistry()' kann nicht exportiert werden.Um sicherzustellen, dass es läuft, versuchen Sie 'createRegistry()': Wenn Sie die 'BindException' erhalten, rufen Sie' getRegistry() 'auf. Natürlich kann man im ersteren Fall nur aus dem Exportieren herauskommen, aber im letzteren Fall ist es das Register eines anderen, also sind sie für das Exportieren verantwortlich. – EJP