我想为我的春季启动应用程序启用JMX并尝试了一切但没有成功。我认为问题在于,我使用repackage
的{{1}}选项。
目前我做了以下事情:
spring-boot-maven-plugin
但是当我启动应用程序时,它不会侦听端口1617.我无法从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
也没有列出端口。
我也通过直接传递ss -tulpen
参数来尝试它。我也尝试了-D...
,并认为Spring引导可以这样处理它们。我还在多台机器上尝试了很多其他的东西,没有成功。
进一步的信息:
--com.sun...
父级。spring-boot
我做错了什么,在哪里可以找到有关此帮助的文档?
更新:我添加了一些行来阅读和打印传递的openjdk version "1.8.0_112"
(如here所述)。当我通过IntelliJ启动应用程序并将VM选项设置为上面的JAVA_OPTS
值时,它可以正常工作。打印传递的选项,VM正在侦听端口1617.当我使用JAVA_OPTS
启动应用程序时,不会打印参数,并且VM仍然没有侦听端口1617.
答案 0 :(得分:3)
问题解决了!我仍然不知道为什么它不能与JAVA_OPTS
一起使用但我知道在直接传递选项时我做错了什么:似乎我总是在之前传递-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