RMI接続を作成しましたが、クライアントの終了時またはクラッシュ時にサーバーに通知する方法がわかりません。私は unreferenced()メソッドを見つけましたが、動作しません。何か案が?
(サーバーがマルチクライアントの場合、クライアントには1種類のオブジェクトしか渡されませんが、どのクライアントもインスタンスが異なります)。
ありがとうございます。Java - RMIによるクライアントクラッシュの検出
2
A
答えて
6
問題は、クライアントがクラッシュした場合、何かをするのは難しく、タイムアウトを待つことになります。
通常の解決方法は、定期的な呼び出しである「ハートビート」を設定することです。クライアントのハートビートが、例えば2つの期間の後にあなたに届かない場合、それは死んでいると判断します。
2
実際にはunreferenced()メソッドは機能しますが、そうする前にDGCの時間間隔が必要です。これは、JDKのバージョンによって異なります。私が最後に見た時、それは10分だった。これを制御するシステムプロパティがあります.Java RMIのホームページを参照してください。この機能は、クライアントが必要とするAPIを実装するクライアント固有のRemoteSessionオブジェクトを介して使用され、クライアントの状態を追跡し、APIを介してクライアント自体が生き残ったりログアウトしたりするのを防ぐためのフェイルセーフとしてUnreferencedを実装します。
クライアント側のコールバックがない限り、クライアントが最後に呼び出した時刻を記録する以外に、クライアントクラッシュを検出する信頼できる方法は他にありません。しかし、これらはセキュリティ上のリスクとして広く見なされており、一般的には特別な処理をしないとファイアウォールでは機能しません。
関連する問題
- 1. 検出サーバーのクラッシュは、RMI
- 2. Java RMIとnetstat出力
- 3. JAVAによる顔検出
- 4. - JavaのRMI
- 5. spring rmi java 1.4およびjava 1.5
- 6. のJava RMIは、RMIで参照
- 7. Java Spring RMIアクティベーション
- 8. Java RMI - クライアントタイムアウト
- 9. Java RMIサーバのシャットダウン
- 10. Java RMIの実装
- 11. Java RMIの警告
- 12. RMIレジストリを使用しないJava RMI
- 13. .NETからJava RMIにアクセス
- 14. 処理によるエッジ検出アルゴリズム(Java)
- 15. Java RMI - リモート展開
- 16. Java RMI ClassCast例外
- 17. tictactoe java rmi connection refused
- 18. Java RMI複数サーバー
- 19. のJava RMIサーバのホスト名
- 20. RMI呼び出しによるクラスインスタンスの返却
- 21. RMIでのJavaシリアル化
- 22. サーバーへのJava RMI接続
- 23. DockerコンテナのJava RMIサーバ
- 24. Java RMIサーバーの問題
- 25. Java RMIアプリケーションの設計
- 26. Java RMIのリモートクライアントでリモートルックアップ
- 27. RMI電卓の問題(JAVA)
- 28. Java RMIのIPアドレスは
- 29. クライアント側のJava RMI ClassNotFoundException
- 30. Java RMI exportObjectメソッドの理解
ご返信ありがとうございます。この仕組みは私の最後の選択でした。なぜなら私はより良い選択肢があると思っていたからです。とにかく、サーバーはクライアントをどのように呼び出すことができますか?サーバーは現在、次のもののみを使用しています。\t \t \t LocateRegistry.createRegistry(RMI_PORT); Naming.rebind(...); クライアントに「ping」する方法はありますか? ありがとうもう一度:) – Simon