0

バックグラウンド:

私はJavaSwingベースのクライアントサーバーアプリケーションを作成しました。サーバーは春のコンテナであり、たくさんのサービスがあります。サーバークライアントは、ソケットを介してシリアル化されたオブジェクトを介して通信します。サーバーは、クライアントセッションごとに新しいスレッドを生成し、通信期間中のセッションのマップを維持します。

JVMにシャットダウンフックを追加しています

私のGUIには、ユーザーセッションを削除してクリーンアップする[サーバーの停止]ボタンがあります。

問題:これはすべて正常に機能しますが、サーバーが再起動しているか停止しているかをクライアントに通知したいと思います。これについてどうやって行くかについてのアイデアはありますか?

ありがとう。

4

2 に答える 2

1

おそらく、サーバーからの応答を受信する方法があります。そのメソッドを別のスレッドで実行し、サーバーからのメッセージをループで永続的に待機させます。サーバーが停止すると、接続が閉じられ、受信側のメソッドは例外を受け取ります。

于 2012-04-11T11:34:18.207 に答える
1

Alexeiが述べたように、クライアントが例外をスローするのを待って、サーバーがシャットダウンしているか停止しているためだと自動的に言うことができます。ただし、これがサーバーに発生する唯一のエラーであることが確実にわかっていない限り、これは最善の方法ではない可能性があります。

サーバーが意図的に停止されていることをクライアントに伝える特定のメッセージをすべてのクライアントに送信することをお勧めします。クライアントが特定のメッセージを受信すると、ソケットを閉じることができます。Sun のKnock Knock Serverの例を参照してください。

于 2012-04-11T20:50:32.040 に答える