RMIサーバーがクラッシュした場合、/ RMIが自身を登録したJava RMIレジストリーからこのサーバーの名前を削除したときは?ここでサーバがクラッシュした場合、どのように名前がRMIレジストリから削除されますか?
2
A
答えて
1
RMIサーバーがクラッシュした場合、/ RMIサーバーが登録されているJava RMIレジストリから削除されたこのサーバーの名前は?
レジストリはそのことを知らされず、チェックもしません。
1
は、問題を示していますシンプルかつ堅牢な例である:
public class RMITEst {
static class Registry {
public static void main(String[] args) throws RemoteException, InterruptedException {
java.rmi.registry.Registry registry = LocateRegistry.createRegistry(1099);
Thread.sleep(Long.MAX_VALUE);
}
}
static class Server {
public static void main(String[] args) throws RemoteException {
java.rmi.registry.Registry registry = LocateRegistry.getRegistry();
TestService service = new TestServiceImpl();
Remote stub = UnicastRemoteObject.exportObject(service, 0);
registry.rebind("test", stub);
}
}
static class Client {
public static void main(String[] args) throws AccessException, RemoteException, NotBoundException {
System.out.println(Arrays.asList(LocateRegistry.getRegistry().list()));
TestService stub = (TestService) LocateRegistry.getRegistry().lookup("test");
stub.test();
}
}
}
interface TestService extends Remote {
public void test() throws RemoteException;
}
class TestServiceImpl implements TestService {
@Override
public void test() {
System.out.println("I am alive!");
}
}
それを使用する方法(すべては、Eclipseから行うことができます):
- 実行レジストリ
- ランクライアント - オブジェクトがバインドされていないために例外が発生します(レジストリは機能しています)
- 実行サーバー
- 実行クライアント - リモートメソッドinvokactionは動作します
test
は検索リストにあります - キルサーバ
- 実行クライアント -
test
はまだルックアップリストにあります! - 接続が拒否された例外はスローされます。
したがって、RMIレジストリは、リモートオブジェクトが消滅しても自動的にバインドをアンバインドしません。 JVMのクラッシュが原因です。
関連する問題
- 1. 取得BHID_LinkTargetItem .lnkファイルからIsShortcutがレジストリから削除された場合
- 2. DOMから要素が削除された場合、ExplicitWaitを削除します
- 3. java rmiレジストリ内のリモートオブジェクトの名前にはどのようなものがありますか?
- 4. SQLから重複した名前の列がDataSetに返された場合はどうなりますか?
- 5. Github - ユーザーが削除された場合のコミットはどうなりますか?
- 6. ライブアプリケーションのプロビジョニングプロファイルが削除された場合はどうなりますか?
- 7. イメージがS3バケットルートから削除された場合のサブディレクトリから対応するサムネイルを削除するにはどうすればよいですか?
- 8. DBCP2 - アイドル接続がプールから削除された場合
- 9. ブラウザがクラッシュした場合にクッキーを削除する方法
- 10. docker-composeで名前付きボリュームを削除しますか?私のようなドッキングウィンドウ・コンファイルがある場合は
- 11. DELETEが削除されなかった場合、どうすれば失敗しますか?
- 12. C#アクセスが拒否されましたレジストリ値の削除
- 13. マッピングされたtdが何かの場合にテーブル行を削除します
- 14. リンクされたリストからどのようにノードを削除しますか?
- 15. ある時点でファイルがgit repoにあったが、今は存在しない場合は、ファイルが「名前が変更された」、「削除された」、「名前が変更されて削除された」かを調べる
- 16. グリッドビューからアイテムが削除された場合のドロップダウンリストからの削除方法
- 17. Excel VBAクリア3つ目が削除された場合は2行から内容を削除します
- 18. TypeScriptは、以前にコンパイルされたJavaScriptファイルが削除された場合にのみコンパイルされます。
- 19. ローカルブランチがGITリポジトリから削除された場合、ローカルブランチをクリーンアップするには
- 20. トリガーはどのように削除されましたか?
- 21. アレイから重複した名前を削除するにはどうすればよいですか?
- 22. 列Dのセルに名前が見つからない場合は、ワークシートを削除します
- 23. Firebaseで子が削除されたときにrecyclerviewから正確な名前を削除できません
- 24. チェックボックスがオフの場合、divから要素を削除するにはどうすればよいですか?
- 25. elmでシグナルの名前が変更されたか、または削除されましたか?0.17
- 26. レジストリからキーを削除
- 27. 別のドロップダウンがちょうどクリックされた場合にドロップダウンから.slideDownアニメーションを削除する
- 28. 設定されているコントロールが削除された場合、イベントハンドラは削除されますか?
- 29. コード名のモックロケーション権限が追加されました。どのように削除するのですか?
- 30. Enterキーが押された場合、どのようにキャプチャしますか?
オブジェクト*は、アンエクスポートされているだけでなく、サーバーJVMが終了すると完全に破棄されます。したがって接続の拒否。何も起きていないのは、レジストリからバインド解除されているため、ルックアップがまだ機能している理由です。同じことではありません。 – EJP
@EJPあなたは正しいです、私は正しいと思っていましたが、間違った用語を使用しました。 – Antoniossss