Spring Boot:如何获得部署在JBoss(或任何应用程序服务器)上的应用程序的运行端口?

应该有一种简单的方法来执行此操作,但是网上的大多数答案都使用类似${server.port}(或其等效项)的内容来提供嵌入式Tomcat服务器的端口。其他解决方案提到监听EmbeddedServletContainerInitializedEvent,但这也仅适用于嵌入式Web服务器。

如何获取部署在(例如)JBoss上的应用程序的端口,该端口是通过服务器自己的配置文件(而不是通过application.properties)确定的?

(PS:在Spring Boot 2中,有一个名为WebServerInitializedEvent的事件,我们可以使用该事件获得真实的端口,但是我正在寻找Spring Boot 1.5.8以下的解决方案)

freddiew81 回答:Spring Boot:如何获得部署在JBoss(或任何应用程序服务器)上的应用程序的运行端口?

我相信应用程序服务器(JBoss和其他服务器)准备接受HTTP连接的端口是应用程序服务器本身的内部端口,并且在没有启动时对于Spring Boot应用程序来说是“范围外的”运行嵌入式服务器。

应用服务器还可能会定义绑定到不同端口的多个连接器(例如,一个用于http,一个用于https),内部与“公共”连接(按ip段过滤),而不是其他。

通常,开发人员并不关心此类信息,如果您需要生成某些链接,请“相对”进行。通常,您甚至不需要知道部署WAR的上下文路径。

现在,如果您绝对需要这样的东西,则没有通用的准则,每个应用程序服务器都可以提供自己的方式。

您可以尝试访问JMX(例如,曾经在JBoss内部运行的Tomcat,我可能对此未进行任何更新,很长时间没有处理JBoss)暴露了MBean for Connector,您可以从中读取端口(如果部署了许多连接器,则显示许多端口的信息)。

本文链接:https://www.f2er.com/3146209.html

大家都在问