【发布时间】:2017-07-26 01:46:44
【问题描述】:
我有一个基于 spring-boot 的应用程序,它部署到 jar 中。它有一个maven多模块项目的形式,包含以下部分:
- 网络
- 服务
- 存储库
- 型号
我的 web 模块需要所有其他模块来构建自己,并在其资源目录中包含以下文件:
- bootstrap.yml
bootstrap.yml 包含以下配置:
eureka:
client:
eureka-server-port: 8761
server:
port: 8763
context-path: /foo-service/rest
spring:
application:
name: foo-service
所以我希望在唤醒期间它将使用端口 8761 并将自己注册到 Eureka 服务。由于某种原因,当我在以下位置进行调试时:
org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration#eurekaInstanceConfigBean
EurekaInstanceConfigBean 的实例包含以下值:
- instanceId = 172.20.39.197:foo-service:8763
- nonSecurePort = 8080
奇怪的是 nonSecurePort 设置为 8080 而不是 8763。在我的其他服务(正常工作)中,nonSecurePort 与 的最后一部分具有相同的值>instanceId。只有在 foo-service 中,价值是不同的。
原因是:
@Value("${server.port:${SERVER_PORT:${PORT:8080}}}")
int nonSecurePort;
找不到配置,返回默认值。但为什么? 我已经检查了由 maven 创建的 foo.jar,并且 bootstrap.yml 是否在正确的位置(BOOT-INF/classes/bootstrap.yml)具有正确的值...
有人知道可能出了什么问题吗?
【问题讨论】:
-
你能提供一个重现问题的样本吗?
-
我尝试创建,但所有简单的示例都适合我。只有这样,单一和复杂的应用程序不起作用。当我设法获得更多信息时,立即在这里分享。不过谢谢!
标签: spring-boot spring-cloud netflix-eureka