IntelliJ IDEA是如何通过JavaAgent和RMI技术识别Spring Boot项目的端口号的?

IntelliJ IDEA是如何通过JavaAgent和RMI技术识别Spring Boot项目的端口号的?

IntelliJ idea巧妙识别spring Boot项目端口号的秘密

intellij idea Ultimate版本在启动spring boot项目时,能自动识别并显示端口号,极大地方便了开发者。即使server.port设置为0,或关闭日志输出,此功能依然有效。 很多人误以为是JMX技术在起作用,但禁用JMX后,IDEA仍然能识别端口号。这是为什么呢?

答案在于IntelliJ IDEA使用了Java Agent技术。IDEA在启动项目时,会在目标进程中注入一段代码,启动一个内部服务。此服务接收来自IDEA的指令,并将进程信息(包括端口号)反馈给IDEA。 通过这种方式,IDEA能够监控并管理项目运行状态。

这种服务间的通信通常基于Java的RMI (Remote Method Invocation)协议。RMI实现IDEA与Spring Boot项目间的实时数据交换,确保了端口号的实时识别。因此,即使JMX被禁用,IDEA依然能通过Java Agent和RMI机制获取端口号信息。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享