我想爲我的春季啓動應用程序啓用JMX,並嘗試了一切,但沒有成功。我認爲,問題是,我正在使用spring-boot-maven-plugin
的repackage
選項。啓用JMX與春季開機重新包裝
此刻,我做了以下內容:
export JAVA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1617 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1"
java -jar target/myapp-1.0.0.jar
但是當我啓動應用程序,它不偵聽端口1617。我不能從JMX客戶端連接和ss -tulpen
也沒有列出端口。
我也嘗試過直接傳遞-D...
參數。我也試過--com.sun...
,並認爲Spring引導可以通過這種方式處理它們。我也在多臺機器上嘗試了許多其他的東西,但沒有成功。
一些進一步的信息:
- 我的應用程序不使用任何
spring-boot
父。 - 我在ArchLinux系統上試過這個。
- 我沒有任何特殊的iptables配置,所有端口都應該在配置的ip上可用。
- 春天引導版本:1.4.1.RELEASE
- Java版本:
openjdk version "1.8.0_112"
什麼我做錯了,我在哪裏可以找到對幫助一個文檔?
UPDATE:我添加了一些線以用於讀取和打印傳遞JAVA_OPTS
(如所解釋here)。當我通過IntelliJ啓動應用程序並將虛擬機選項設置爲上面的JAVA_OPTS
值時,它可以工作。已打印的選項已打印,且VM正在偵聽端口1617.當我使用java -jar my.jar -Dcom.sun....
啓動應用程序時,參數未打印且VM仍未偵聽端口1617.
我認爲你正在使用[錯誤的方式(HTTP: //堆棧溢出。com/questions/2011311/running-java-with-java-opts-env-variable)來傳遞JMX參數。嘗試在'java'命令後直接傳遞它們。 –
通過「它不聽1617端口」,你的意思是你不能連接,或者你已經在netstat中查看它? – chrylis
@MaximDobryakov如上所述。我已經這樣做了。我用'java -Dcom.sun .... -jar ...'運行了java命令。 –