各コントローラーが @PostConstruct で ZooKeeper に登録し、@PreDestroy で登録解除する Spring MVC レスト コントローラーで Curator サービス ディスカバリーを使用しています。
私が抱えている問題は、 @PreDestroy メソッドが呼び出されるまでに、コントローラーが既にリクエストを処理していないことです。コントローラーの停止と登録解除の間に発生する少数の要求に対して例外がスローされないように、コントローラーが要求の処理を停止する前に、コントローラーの登録を解除する必要があります。
春の ApplicationListener インターフェイス、SmartLifecycle、および ServletContextListener を試しましたが、すべてのシャットダウン/クローズ関連のフックで、コントローラーは要求の処理を既に停止しています。
コントローラーがリクエストの処理を停止する前に登録を解除できるシャットダウン フックが必要ですが、利用できるかどうかはわかりません。