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

时间:2020-03-13 16:11:06

标签: java spring spring-boot port spring-boot-actuator

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

URL,不起作用

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

URL,可以正常运行:

唯一的区别在于端口号,但是根据我在spring文档中所读的内容,如果未指定management.server.port,则默认情况下应在应用程序端口上启用执行器端点。 有人可以解释一下我在这里想念什么吗?enter image description here 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

这是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>

3 个答案:

答案 0 :(得分:1)

关于Spring Boot执行器documentation

使用默认的HTTP端口公开管理端点是 基于云的部署的明智选择。但是,如果 应用程序在您自己的数据中心内运行,您可能希望公开 端点使用其他HTTP端口。

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

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

答案 1 :(得分:1)

删除 management.server.port=9000,此属性覆盖 server.port=8080

答案 2 :(得分:0)

请在application.properties文件中设置以下内容

management.endpoints.enabled-by-default=true 

management.endpoints.web.exposure.include=*