ユーレカクライアントが異常BeanCreationNotAllowedExceptionを閉じました

BeanCreationNotAllowedException

これは、簡単にブートで再現できる  2.0.4 か  1.5.14 (つまり、春の雲  Edgware.SR4 や  Finchley.SR1

 

(1)    public synchronized void shutdown() {
(2)        if (isShutdown.compareAndSet(false, true)) {
(3)            logger.info("Shutting down DiscoveryClient ...");
(4)
(5)            if (statusChangeListener != null && applicationInfoManager != null) {
(6)                applicationInfoManager.unregisterStatusChangeListener(statusChangeListener.getId());
(7)            }

理由:

 

レッツ・要約:

  • DiscoveryClient.shutdown()は、アプリケーション・コンテキストのシャットダウン/クローズ処理中に呼び出され
  • DiscoveryClientはApplicationInfoManagerから登録解除する必要があります
  • applicationInfoManagerがリフレッシュスコープで、その目標は、すべてのメソッド呼び出しのために解決しなければなりません
  • たBeanFactoryが閉状態にあるため、解像度がBeanCreationNotAllowedExceptionで失敗します。

要約:applicationInfoManagerがrefreshscoped Beanで、Beanがシャットダウン豆中にサービスを再構築し、すべてのリロードを呼び出して、その後の版で復元し、例外が発生します。

修理は提出:  https://github.com/spring-cloud/spring-cloud-netflix/commit/0c3fbc34f6b906bbe5ffc0a6ac5900357b67c72a

 

 

 

公開された20元の記事 ウォンの賞賛0 ビュー10000 +

おすすめ

転載: blog.csdn.net/u011248560/article/details/103868959