サーブレットアプリケーションに適切なシャットダウンメカニズムを実装する必要があります。長いシャットダウン中にサーブレットリクエストを処理する方法
EDIT:できるだけシンプルにしたい。オペレーティングシステムの機能によって送信されるkillシグナルを処理することが望ましい。これにより、システム管理者はシェルユーティリティ(Windowsではkillまたはtaskkill)を使うことができます。そうしないと、サーバと "話す"ために別のユーティリティをインストールする必要があります。
このメカニズムは、2つのフェーズで動作します:
シャットダウン要求に応じ- 、拒否、特定の重要な活動
- ブロック以前に開始され、重要なアクションが完了するまで、これらは数時間かかる場合があります。
フェーズ1はDAOレイヤーに実装されています。 フェーズ#2は、ServletContextListener#contextDestroyedメソッドで実装されています
私たちの問題は、contextDestroyedが呼び出されると、サーブレットコンテナがさらにHTTPリクエストの処理を停止するということです。
EDIT:contextDestroyedは、サーバーのプロセス上でオペレーティングシステムのkill関数を呼び出しているときに呼び出されます。
フェーズ2でアプリケーションを有効にして、一部のアクティビティが利用できないことをユーザーに通知します。
良い質問です。拒否するアクティビティが特定のサーブレットに実装されている場合、DBルックアップでシャットダウンが進行中であることが示唆された場合、これらの(およびこれらのみ)ステータスを4xxの範囲で返すことができます。 –
いくつかのアクティビティはUIアクションによって開始され、一部はスケジューラによって開始されます。そのため、DAOレイヤでそれらを制御することを考えています。 –