Spring 执行器端点在应用程序端口上不起作用

Abh*_*hra 5 java port spring spring-boot spring-boot-actuator

我试图在与应用程序端口相同的端口上启用执行器端点(在 application.properties 文件中由 server.port=8080 指定),但由于某种原因,它不起作用。当我运行应用程序时,我可以从应用程序获取响应,但不能从执行器端点获取响应。我可以看到日志提到在基本路径“/actuator”下公开的端点,如下面的屏幕截图所示。但是当我尝试点击执行器 URL 时,它给出了 404。

网址,不起作用

但是,如果我在 application.properties 中为具有属性 (management.server.port=9000) 的执行器端点指定单独的端口,那么它可以正常工作。

网址,正在运行

唯一的区别是端口号,但从我在 spring 文档中读到的内容来看,如果我们不指定 management.server.port,则默认情况下应在应用程序端口上启用执行器端点。有人可以解释一下我在这里缺少什么吗?在此输入图像描述 PS:无论是否指定management.server.port,应用程序运行日志都完全相同,因此,这张截图没有指定管理端口。另外,我尝试为两个属性(server.port 和 management.server.port)提供相同的端口号,但出现了相同的问题。应用程序在该端口上运行,但执行器端点却不起作用。我使用的是spring-boot版本2.0.6

这些是我的 application.properties 文件的内容:

camel.springboot.main-run-controller=true
camel.springboot.name=AppName
camel.rest.data-format-property.prettyPrint=false
camel.component.servlet.mapping.context-path=/*

server.port=8080
management.server.port=9000

management.endpoint.health.show-details=always
management.endpoint.beans.enabled=true

logging.level.org.springframework = INFO
logging.level.org.apache.camel.spring.boot = INFO
logging.level.org.apache.camel.impl = DEBUG
Run Code Online (Sandbox Code Playgroud)

以下是 pom.xml 中的依赖项:

<dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-servlet-starter</artifactId>
        </dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)

rie*_*pil 2

关于 Spring Boot Actuator文档

对于基于云的部署来说,使用默认 HTTP 端口公开管理端点是明智的选择。但是,如果您的应用程序在您自己的数据中心内运行,您可能更愿意使用不同的 HTTP 端口来公开端点。

它使用默认的 HTTP 端口(8080)为执行器提供服务。我进行了快速检查,并可以使用 Spring Boot 2.1.X 和 2.2.X 确认这一点。

尝试从您的配置中删除management.port,如果这不起作用,则问题可能来自应用程序中的其他(自定义)配置。