我试图在与应用程序端口相同的端口上启用执行器端点(application.properties由server.port=8080在www.example.com文件中指定),但由于某种原因,它不起作用。当我运行应用程序时,我可以从应用程序中获得响应,但不能从执行器端点中获得响应。我可以看到日志中提到端点暴露在基本路径'/actuator'下,如下面的屏幕截图所示。但是当我尝试点击执行器的URL时,它给出了404。
URL,无法使用:
- http://localhost:8080/执行器
- http://localhost:8080/执行器/健康
- http://localhost:8080/actuator/info
但是,如果我在www.example.com中application.properties为属性为(management.server.port=9000)的执行器端点指定一个单独的端口,那么它可以正常工作。
URL,这是工作:
- http://localhost:9000/执行器
- http://localhost:9000/执行器/健康
- http://localhost:9000/actuator/info
唯一的区别是关于端口号,但从我在spring文档中阅读的内容来看,如果我们不指定management. server. port,则默认情况下应在应用程序端口上启用执行器端点。有人能解释一下我错过了什么吗?x1c 0d1x PS:应用程序运行日志完全相同,无论是否指定management.server.port,因此,这一个截图没有指定管理端口。另外,我尝试为两个属性(server.port和management.server.port)提供相同的端口号,但出现了相同的问题。应用程序在该端口上工作,但执行器端点不工作。我使用的是spring-boot版本2.0.6
以下是我的www.example.com文件的内容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>
5条答案
按热度按时间bxjv4tth1#
关于 Spring Boot 致动器文档
通过使用默认HTTP端口公开管理端点是基于云的部署的明智选择。但是,如果您的应用程序在您自己的数据中心内运行,您可能更愿意使用不同的HTTP端口来公开端点。
它使用默认HTTP端口(其为8080)为致动器服务。我做了一个快速检查,可以用Sping Boot 2.1.X和2.2.X确认这一点。
尝试从配置中删除
management.port
,如果这不起作用,那么问题可能来自应用程序中的额外(自定义)配置。xmakbtuz2#
请在www.example.com文件中设置以下内容application.properties
vwhgwdsa3#
删除
management.server.port=9000
,此属性将覆盖server.port=8080
。oxiaedzo4#
我也遇到了同样的问题,对我来说,导致这个问题的原因是我为camel声明的上下文和用于spring actuator的上下文之间的冲突。
所以,在application.yml中,我有这三个上下文:
我认为在请求到达服务器后,它会迷失在这种模糊性中,所以我通过将这些上下文更改为:
这对我来说很好,因为我所有的资源都被分组在“/camel”下,但当我测试时,我发现这也很有效:
请注意,在最后一个场景中,健康路径不会位于“v1”之下。
如果不是这个问题,我永远不会找出这个问题的原因,即使它还没有解决,所以我非常感谢你发布这篇文章,希望我的解决方案能帮助其他人^^
hxzsmxv25#
服务器和管理配置示例
下面是一个示例配置。
您可以有一个单独的服务器端口和一个用于管理的执行器将运行。例如,您可以使用
port 8001
作为SERVER
端口,也可以使用port 8000
作为MANAGEMENT
端口。我将使用
applications.properties
文件格式作为我的答案。如果使用application.yml
,请相应更新请注意自定义管理路径
/management
您可以根据需要删除/保留此选项