Spring Eureka 客户端没有从配置文件中看到服务器端口
Spring Eureka Client does not see server port from configuration file
我有一个基于 spring-boot 的应用程序部署到 jar。它具有maven多模块项目的形式,包含以下部分:
- 网络
- 服务
- 存储库
- 型号
我的网络模块需要所有其他模块自行构建,并在其资源目录中包含以下文件:
- 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
- 非安全端口=8080
奇怪的是 nonSecurePort 设置在 8080 而不是 8763。在我的其他服务(正常工作)中 nonSecurePort 有与 instanceId 的最后一部分相同的值。只有在 foo-service 中,值是不同的。
原因是:
@Value("${server.port:${SERVER_PORT:${PORT:8080}}}")
int nonSecurePort;
找不到配置,returns默认值。但为什么?
我检查了由 maven 创建的 foo.jar 并且 bootstrap.yml 位于正确的位置 (BOOT-INF/classes/bootstrap.yml) 并具有正确的值...
有人知道哪里出了问题吗?
原因如下:
该应用程序仍有一些旧属性通过 xml 加载:
@Configuration
@ImportResource("some-xml-file") // which loads properties
class FooConfig {}
xml 文件加载的属性没有定义任何端口,因此可以肯定这不是覆盖的情况。然而,似乎足以以某种方式干扰 Spring-Boot.
小重构后:
@Configuration
@PropertySource("properties-file") // loading properties without xml
class FooConfig {}
全部开始工作。
我也遇到了同样的问题
几个启动应用程序的构建方式完全相同。使用 @ImportResource 的应用程序向 Eureka 注册了错误的默认端口 8080。
我还不能离开@ImportResource。
将以下内容添加到 bootstrap.yml 有效。
eureka:
instance:
non-secure-port: 8088
我有一个基于 spring-boot 的应用程序部署到 jar。它具有maven多模块项目的形式,包含以下部分:
- 网络
- 服务
- 存储库
- 型号
我的网络模块需要所有其他模块自行构建,并在其资源目录中包含以下文件:
- 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
- 非安全端口=8080
奇怪的是 nonSecurePort 设置在 8080 而不是 8763。在我的其他服务(正常工作)中 nonSecurePort 有与 instanceId 的最后一部分相同的值。只有在 foo-service 中,值是不同的。
原因是:
@Value("${server.port:${SERVER_PORT:${PORT:8080}}}")
int nonSecurePort;
找不到配置,returns默认值。但为什么? 我检查了由 maven 创建的 foo.jar 并且 bootstrap.yml 位于正确的位置 (BOOT-INF/classes/bootstrap.yml) 并具有正确的值...
有人知道哪里出了问题吗?
原因如下:
该应用程序仍有一些旧属性通过 xml 加载:
@Configuration
@ImportResource("some-xml-file") // which loads properties
class FooConfig {}
xml 文件加载的属性没有定义任何端口,因此可以肯定这不是覆盖的情况。然而,似乎足以以某种方式干扰 Spring-Boot.
小重构后:
@Configuration
@PropertySource("properties-file") // loading properties without xml
class FooConfig {}
全部开始工作。
我也遇到了同样的问题
几个启动应用程序的构建方式完全相同。使用 @ImportResource 的应用程序向 Eureka 注册了错误的默认端口 8080。
我还不能离开@ImportResource。
将以下内容添加到 bootstrap.yml 有效。
eureka:
instance:
non-secure-port: 8088