3

組み込みの tomcatをコンテナーとして使用するSpring Boot Web サービスを作成しました。

システムが再起動した場合に備えて、いくつかの情報を mysql データベースにバックアップしたいと考えています。

私のWebサービスでは、バックアップを実行するために@Scheduled()とを使用しています。@PreDestroy

^C でサーバーを停止するとうまくいきます。

しかし、sysV スクリプト( /etc/init.d) と kill コマンドを使用してプロセスを強制終了すると、デーモンが mysql に依存していても、バックアップが完了する前に mysql サーバーがシャットダウンされます (ログに SQL 例外が発生します)。

もちろん、その理由は、 kill はプロセスを停止するためのシグナルのみを送信するためです。

(sysv スクリプトから) 実行中の Spring Boot Tomcat サーバーを同期的に停止するにはどうすればよいですか?

4

2 に答える 2

1

「/shutdown」エンドポイントの代わりに、アクチュエータにはApplicationPidListenerpidfile を作成するために使用できる (デフォルトでは有効になっていません) があります (「init.d」スタイルのスクリプトでは、必要なときにプロセスを強制終了するために一般的に使用されます)。やめろ)。JVM は kill (sigint) に応答する必要があり、Spring は正常にシャットダウンします。

于 2014-05-08T14:41:41.950 に答える