【发布时间】:2015-12-14 18:53:07
【问题描述】:
我有一个 Spring Boot 应用程序,其中应用程序的每个实例都是集群中的一个节点,每个节点都需要能够与集群中的其他节点通信以共享信息。出于性能原因,这不能通过 HTTP 发生,尽管集群中每个节点的初始联系是通过 HTTP 调用。
要进行初始 HTTP 调用,实例需要能够获取其他实例正在运行的端口,以便它们可以相互注册。这意味着每个节点都需要知道其 Tomcat 实例使用的端口。
如果我部署一个包含嵌入式 Tomcat 实例的 WAR 文件,这可以正常工作。我为 EmbeddedServletContainerInitializedEvent 注册了一个 ApplicationListener 并从 EmbbededServletContainer 获取端口。
当我将 WAR 文件部署到已经运行的 Tomcat 实例时,问题就出现了。我无法找到一种方法来确定 Tomcat 实例正在哪个端口上运行,并且由于 Tomcat 实例已经在运行,因此上述事件不再触发。
有人知道如何找出正在使用的端口吗?
【问题讨论】:
-
你有没有尝试过?这是tomcat7的帖子stackoverflow.com/questions/6833947/…你看到了吗?
-
嗨,安。感谢您的回复。我找到了您刚才提到的答案,但当时它对我不起作用。在阅读了您的问题后,我再次尝试了一下,发现提到的代码对何时被调用很敏感。我的代码在 SpringBoot 代码完成初始化之前就已经运行了。我现在发现 ow 可以完成这项工作,这解决了我的问题。
标签: java spring tomcat spring-boot