1

私は、開発中のサーバーのシャットダウン ロジックを実装するクリーンな方法を検討してきました。

私が取ることができる2つのアプローチがあります:

  • Ctrl-C が発行されたときにシャットダウンを適切に処理するには、Runtime.addShutdownHook() を使用します。
  • 指定されたシャットダウン ポートをリッスンし (Tomcat が行うことと同様)、そのポートを介して適切なコマンドを受信するとシャットダウンします。

最初のアプローチは実装が簡単ですが、シャットダウン メカニズムとして Ctrl-C を使用するのは洗練されていないようです。2 番目の方法はすっきりしているように見えますが、別のポートを構成してリッスンするためのオーバーヘッドが必要です。

特により良い代替案を提案できる場合は、これに関するアドバイスをいただければ幸いです。

4

2 に答える 2

3

おそらく、アプリケーションはすでにコマンドを受け取っていますよね? つまり、何らかの形で入力する必要があります!. シャットダウン用のコマンドを追加しないのはなぜですか?

明らかに、コマンドの発行に関してある程度のセキュリティが必要ですが、シャットダウンを実行するコードが既にある場合は (フックに入れるものは何でも)、コマンドを入れるだけで済みます。

于 2012-07-05T15:50:10.083 に答える
2

あなたに選択肢があるかどうかわかりません;)

サーバーの実行方法と場所、および使用するリソースの種類に応じて、誰かが実際に行ってctrl + cですべてを行うという奇妙なケースに備えて、シャットダウンフックを実装する必要があります(ユーザーマニュアルに記載されているかどうかに関係なく)いいえ)

一方、通常の使用では、シャットダウン コマンドをプッシュする方法が最善の方法のように思えます。ただし、専用のポートやコマンド セットは必要ないかもしれません。通常の既存のインターフェイスに含めることができる場合があります。

于 2012-07-05T15:51:02.120 に答える