启动时重复的关键端点异常 - 在 Spring Boot Admin Client 中

Posted

技术标签:

【中文标题】启动时重复的关键端点异常 - 在 Spring Boot Admin Client 中【英文标题】:Duplicate key Endpoint exception while starting - in Spring Boot Admin Client 【发布时间】:2020-01-03 07:32:04 【问题描述】:

我正在尝试配置 Spring Boot Admin Client,但我正在启动无法向服务器注册的客户端应用程序。在启动应用程序时,我遇到了以下异常。

java.lang.IllegalStateException: Duplicate key Endpoint(id=threaddump, url=http://localhost:9082/client-web/management/actuator/dump)

我正在使用与 Spring Boot Admin Server 相同版本的客户端的依赖版本

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
</parent>

<dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.0.1</version>
</dependency>

是什么导致了问题?

【问题讨论】:

【参考方案1】:

这是“Spring boot admin 1.x”中的已知错误。但已在更高版本(2.0.2)中修复。 Endpoints 列表从 AdminServerProperties 类中获取,默认为


  "health", "env", "metrics", "httptrace:trace", 
 "httptrace","threaddump:dump","threaddump", "jolokia", "info",
 "logfile", "refresh", "flyway", 
 "liquibase", "heapdump", "loggers","auditevents"

    ;

重复键的问题似乎是由“httptrace:trace”和“httptrace”的存在引起的(对于threaddump也是如此)

在配置中通过添加该行来覆盖它似乎可以解决问题。

spring.boot.admin.probed-endpoints: [ "health", "env", "metrics", "httptrace:trace", "threaddump:dump", "jolokia", "info", "logfile", "refresh", "flyway", "liquibase", "heapdump", "loggers", "auditevents" ]

更多信息请查看:https://github.com/codecentric/spring-boot-admin/issues/828

或者,您可以更新 pom.xml 如下

<dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-client</artifactId>
            <version>2.0.2 or above</version>
</dependency>

【讨论】:

覆盖配置后,我得到以下无法检索实例信息(id=94f60734712b,版本=2,注册=注册(名称=应用程序 Web,管理Url=localhost:9082/client-web/management/actuator,健康Url =localhost:9082/client-web/management/actuator/health)), buildVersion=null .....): 404 您可以尝试使用 2.0.2 及更高版本。如果你不是一定要使用 2.0.1 所有版本都一样 现在我允许客户端中的所有端点,但现在我是另一个异常 managementUrl=localhost:1501/APPNAME-web/=%2520/management/… denied:但现在我又遇到了另一个异常 org.springframework.security.web.firewall.RequestRejectedException:请求被拒绝,因为 URL 包含潜在的恶意字符串“%25”

以上是关于启动时重复的关键端点异常 - 在 Spring Boot Admin Client 中的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 启动异常

在 Spring 应用程序中记录容器启动时的静止端点

重复条目异常:Spring Hibernate/JPA 级联保存多对一

Spring 5 Reactive 中的 HTTP 响应异常处理

即使对于没有安全设置的端点,也总是调用 Spring Security 过滤器[重复]

休息DSL路由-由于不允许同一端点有多个消费者,导致路由启动失败。