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 分享