[英]Enable JMX with spring boot repackage
我想为我的Spring Boot应用程序启用JMX,并尝试了一切,但没有成功。 我认为问题是,我正在使用spring-boot-maven-plugin
的repackage
选项。
目前,我执行了以下操作:
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 boot可以这样处理它们。 我还在多台机器上尝试了许多其他事情,但没有成功。
一些进一步的信息:
spring-boot
家长。 openjdk version "1.8.0_112"
我在做什么错,在哪里可以找到有关此问题的文档?
更新:我添加了阅读和打印的推移,一些线路JAVA_OPTS
(如解释在这里 )。 当我通过IntelliJ启动应用程序并将VM选项从上方设置为JAVA_OPTS
值时,它就可以工作。 打印通过的选项,并且VM正在监听端口1617。当我使用java -jar my.jar -Dcom.sun....
启动应用程序时,不会打印参数,并且VM仍然不在监听端口1617。
问题解决了! 我仍然不知道为什么它不能与JAVA_OPTS
但是我知道直接传递选项时我做错了:似乎我总是在-Dcom.sun...
选项之前传递-jar ...
-Dcom.sun...
选项。 但是我现在发现:
这些选项的顺序至关重要!
什么? 真?
是!
因此,现在适合我的方式:
java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1617 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar my.jar
而这一次不工作:
java -jar my.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1617 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.