は、私は任意のプロセスからレジストリをシャットダウン(そしてそのことについては、バインドされたレジストリにバインドされているプロセスのシャットダウン)
リモート拡張し、あなたが最終的に欲しいのいずれかのインターフェイスをする方法を発見しましたまた、次のインタフェースを拡張する必要があります。
public interface PIDSupplierInterface extends Remote {
String getPID() throws RemoteException;
}
これでインターフェイスの一部として作成するすべてのサーバークラスは、getPID()を実装する必要があります。それから、プロセスIDを返す必要があります。 WindowsのGoogle「getpids」、またはwww.jroller.com/santhosh/entry/get_current_java_process_idにアクセスしてください。私が理解しているように、PIDについてはもっと簡単です。そして、(Windowsの)あなたは、単にPIDSupplierServerがクラスである
PIDSupplierInterface stub = PIDSupplierInterface)UnicastRemoteObject.exportObject(
new PIDSupplierServer(), 0);
reg.bind("regKiller", stub);
を行って、(プログラム的に)レジストリを開始する際、まず、レジストリ自体のPIDを殺すために
String PID = myServer.getPID();
String[] a_command = { "taskkill", "/pid", PID };
Runtime.getRuntime().exec(a_command, envp, dir);
に行きたいですこれはPIDSupplierInterfaceだけを実装します。その後
、あなただけのREGは、あなたのシステムから消えた
PIDSupplierInterface regProcess = (PIDSupplierInterface)reg.lookup("regKiller");
String regPID = regProcess.getPID();
String[] a_command = { "taskkill", "/pid", regPID };
Runtime.getRuntime().exec(a_command, envp, dir);
を行って任意のプロセスからのRMIレジストリを殺すしたいと思います。または、あなたの質問は何らかの理由でより複雑になっていますか?コメントは大歓迎です。
a * prior * 'createRegistry()'の* result *はアンエクスポートできます。実行されていることを確認するには、 'createRegistry()'を試してください: 'BindException'を取得した場合は、' getRegistry() 'を呼び出してください。もちろん、前者の場合はアンエクスポートしかできませんが、後者の場合は、他の人のレジストリであるため、アンエクスポートする必要があります。 – EJP