Java 为什么春云执政官不';你不能使用独立的tomcat吗?

Java 为什么春云执政官不';你不能使用独立的tomcat吗?,java,spring,spring-boot,spring-cloud,spring-cloud-consul,Java,Spring,Spring Boot,Spring Cloud,Spring Cloud Consul,当使用嵌入式tomcat在Spring引导中运行代码时,SpringCloud-Concur可以正常工作 当我们在独立的tomcat上部署代码时,它不起作用。似乎存在一个ConsultAutoServiceRegistrationListener,它在WebServerInitializeEvent上启动Consult服务注册。只有在使用嵌入式tomcat在spring引导中运行代码时,才会触发此事件 在上提供了两种变通方法,但在最新的Greenwich.RC2release中,它们都不再适用

当使用嵌入式tomcat在Spring引导中运行代码时,SpringCloud-Concur可以正常工作

当我们在独立的tomcat上部署代码时,它不起作用。似乎存在一个
ConsultAutoServiceRegistrationListener
,它在
WebServerInitializeEvent
上启动Consult服务注册。只有在使用嵌入式tomcat在spring引导中运行代码时,才会触发此事件

在上提供了两种变通方法,但在最新的
Greenwich.RC2
release中,它们都不再适用

在独立的tomcat上启动服务注册的其他方法有哪些


如果您需要更多详细信息,请告诉我。

我认为您可以设置
spring.cloud.consul.discovery.port=${server.port}
,而不需要
setPort()
方法。

这只是一篇后续文章,上面的答案仍然有效。今天我遇到了同样的问题,我的Spring Boot应用程序在外部Tomcat服务器上运行时没有向Concur注册。尽管可以根据上面帖子中提到的所有信息提出一个有效的解决方案,但我已经在这里的一篇帖子中提供了所有信息

我必须在中更改一件事,即使用(…)后的注释
@AutoConfigurationAfter。我不得不将其更改为
@AutoConfigureAfter(…)


解决方案 将以下
myconsullifeccycle
添加到您的应用程序中,基于:

与解决方案相反,方法
setPort()
不再可用。这一点已经在他帖子上的评论中提到

如上所述,通过在
application.properties
文件中设置
spring.cloud.concur.discovery.port=${server.port}
可以解决这个问题:

server.port=8080
spring.cloud.consul.discovery.port=${server.port}

请注意,在使用独立的Tomcat服务器时需要一个
server.port
属性,这有点奇怪。

当我提到标题时,我将查找您提到的问题。Greenwich.RC2怎么了?@Spencergib谢谢你的回复。例如,在Greenwich.RC2中,
consultAutoServiceRegistration
中不再有我们用来设置此处解决方案中提到的端口的
setPort
方法。它已替换为SetPortiFneedd,但受包装保护。如果您需要更多信息,请告诉我。另一个附带问题是,在spring boot
WebServerInitializedEvent
而不是spring
ContextRefreshedEvent
事件上初始化Consor自动注册的原因是什么。如果使用随机端口,则端口在
WebServerInitializedEvent
之前不可用。我想您可以设置
spring.cloud.concur.discovery.port=${server.port}
并且不需要
setPort()
方法。
server.port=8080
spring.cloud.consul.discovery.port=${server.port}