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