spring 实际上 运行 在端口 0 上启动应用程序,而不是随机启动
spring boot app actually running on port 0, instead of random
我的 application.properties 文件包含
server.port=0
应该由 spring 引导捕获并将其设置为随机端口。
相反,它实际上是在端口 0 上启动它,甚至在 spring 日志中也是这样:
01/Mar/2019 12:50:43,600- TomcatEmbeddedServletContainer: Tomcat initialized with port(s): 0 (http)
Eureka 将其视为'up' 服务,并向该服务提供link (localhost:0/info
),点击它给我的浏览器'ERR_ADDRESS_INVALID
',猜测是因为它不是一个有效的端口..
应用运行向Eureka发送心跳,但为什么spring没有设置随机端口号?
有什么设置可以防止乱码吗?如果可以,如何取消设置?
编辑: 任何新的启动应用程序 server.port=0 都是随机的,它不适用于现有的 spring 启动应用程序,它有很多依赖项
尝试以编程方式设置端口:
@Configuration
public class ServletConfig {
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
container.setPort(new Random().nextInt(65_535) + 1_000);
});
}
}
此外,这可能会有所帮助:
它实际上并没有在端口 0 上启动它,而是在一个随机端口上启动它。
在您的尤里卡服务器中,您会看到它位于端口 0,但如果您将自己置于顶部而不单击,您将在浏览器栏中看到该端口不同。
在日志中显示:
INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
但后来更改了它:
INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 64039 (http) with context path ''
INFO o.s.c.n.e.s.EurekaAutoServiceRegistration - Updating port to 64039
因此,如果您在相互通信时遇到问题,那是因为在每个以随机端口启动的微服务中,都必须在您的 application.yml
中配置一个 preferIpAddress
以通过 ip 找到它,而不是按主机名:
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:portServer/eureka/
instance:
preferIpAddress: true
我的 application.properties 文件包含
server.port=0
应该由 spring 引导捕获并将其设置为随机端口。
相反,它实际上是在端口 0 上启动它,甚至在 spring 日志中也是这样:
01/Mar/2019 12:50:43,600- TomcatEmbeddedServletContainer: Tomcat initialized with port(s): 0 (http)
Eureka 将其视为'up' 服务,并向该服务提供link (localhost:0/info
),点击它给我的浏览器'ERR_ADDRESS_INVALID
',猜测是因为它不是一个有效的端口..
应用运行向Eureka发送心跳,但为什么spring没有设置随机端口号?
有什么设置可以防止乱码吗?如果可以,如何取消设置?
编辑: 任何新的启动应用程序 server.port=0 都是随机的,它不适用于现有的 spring 启动应用程序,它有很多依赖项
尝试以编程方式设置端口:
@Configuration
public class ServletConfig {
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
container.setPort(new Random().nextInt(65_535) + 1_000);
});
}
}
此外,这可能会有所帮助:
它实际上并没有在端口 0 上启动它,而是在一个随机端口上启动它。 在您的尤里卡服务器中,您会看到它位于端口 0,但如果您将自己置于顶部而不单击,您将在浏览器栏中看到该端口不同。
在日志中显示:
INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat initialized with port(s): 0 (http)
但后来更改了它:
INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): 64039 (http) with context path ''
INFO o.s.c.n.e.s.EurekaAutoServiceRegistration - Updating port to 64039
因此,如果您在相互通信时遇到问题,那是因为在每个以随机端口启动的微服务中,都必须在您的 application.yml
中配置一个 preferIpAddress
以通过 ip 找到它,而不是按主机名:
eureka:
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:portServer/eureka/
instance:
preferIpAddress: true