2016-08-12 5 views
1
Caused by: java.lang.NullPointerException 
    at org.springframework.boot.actuate.endpoint.DataSourcePublicMetrics.initialize(DataSourcePublicMetrics.java:64) ~[spring-boot-actuator-1.3.2.RELEASE.jar:1.3.2.RELEASE] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_79] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[?:1.7.0_79] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_79] 
    at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_79] 
    at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 

利用できないとき、二次データソースのデータベース接続を開始しません。これにより、データベース接続が利用できなくなったときにNullPointerExceptionが発生し、スプリングブートが開始されません。春ブーツは、私があまりにもメトリックをディセーブルですが、運</p> <pre><code>endpoints.enabled=false endpoints.autoconfig.enabled=false endpoints.metrics.enabled=false </code></pre> <p><code>DataSourcePublicMetrics</code> Beanが常にメトリックが無効になっている場合でも、作成されません。

答えて

0

私はHikariデータソースを使用していますが、データベースが利用できない場合はデータソースオブジェクトを構築できません。したがって、DataSourcePublicMetrics BeanのNPEです。データベースが利用可能になったときにデータベースを使用できなくなっても、データベース設定で遅延初期化されたHikariデータソースを作成するという問題を回避できます。なぜ、HikariDataSourceにlazy initのコンストラクタがないのか不明です。デフォルトのコンストラクタはありますが、データベース設定は任意のセッタメソッドを使用して設定することはできません。これは、データベースの起動が必ずしも必要でないアプリケーションに役立ちます。

public class LazyConnectionDataSource extends HikariDataSource { 
    public LazyConnectionDataSource(HikariConfig config) { 
     config.validate(); 
     config.copyState(this); 
    } 
} 
関連する問題

 関連する問題