spring-boot - Spring Boot 2 Actuator Starter 中的空指针 w。 Tomcat 指标

标签 spring-boot spring-boot-actuator spring-micrometer

我最近将我们的系统从 Spring Boot 1.5 升级到 2.1.3 并添加了 spring-boot-starter-actuator .显然,有些东西配置错误,因为有一个 NullPointerExceptionTomcatMetrics::registerMetricsEventually :

java.lang.NullPointerException: null
    at io.micrometer.core.instrument.binder.tomcat.TomcatMetrics.lambda$registerMetricsEventually$aa4da135$1(TomcatMetrics.java:260)
    at java.management/javax.management.NotificationBroadcasterSupport.sendNotification(NotificationBroadcasterSupport.java:238)
    at java.management/javax.management.MBeanServerDelegate.sendNotification(MBeanServerDelegate.java:211)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.sendNotification(DefaultMBeanServerInterceptor.java:1473)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1867)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:955)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:890)
    at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:320)
    at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
    at org.apache.tomcat.util.modeler.Registry.registerComponent(Registry.java:639)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.register(AbstractProtocol.java:1059)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:823)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:834)

空指针出现在这里:
return objectName.getDomain().equals(getJmxDomain()) && objectName.getKeyProperty(key).equals(value);

因为 objectName.getKeyProperty("j2eeType")返回空值。

这是否表明某些东西明显配置错误?

最佳答案

我正在使用下面显示的 spring boot 2.1.8 的依赖项运行,甚至将运行时范围添加到 pom 的 micrometer 中,但它没有帮助。 Actuator 正在寻找相同键(“j2eeType”)的值并且没有优雅地处理它。

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-actuator-autoconfigure</artifactId>
     <version>2.1.8.RELEASE</version>
     <scope>compile</scope>
 </dependency>
 <dependency>
     <groupId>io.micrometer</groupId>
     <artifactId>micrometer-core</artifactId>
     <version>1.1.6</version>
     <scope>runtime</scope>
 </dependency>

关于spring-boot - Spring Boot 2 Actuator Starter 中的空指针 w。 Tomcat 指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56134059/

相关文章:

java - 如何在 Grafana 中创建健康检查?

spring - 如何在 Spring Boot Health 中添加自定义健康检查?

java - 如何从 Spring Boot 中的资源中读取 JSON 文件

spring-boot-actuator - 如何使用自定义 spring-boot-actuator 指标

tomcat - Spring + thymeleaf 渲染HTML表单标签失败

java - 在初始化 SpringBootApplication 的 ApplicationContextInitializer bean 之前启动一个 @WebServlet

java - Spring Data 总是返回一个带有反应式 mongo 存储库的空数组

gradle - 无法让 Micrometer Prometheus 下载到我的 Grails 2 应用程序中

out-of-memory - 微米高内存使用率

spring-boot - 在 Spring Boot 应用程序中使用 Flyway 进行多数据源迁移