JMX Profiling不适用于maven

时间:2013-10-13 13:51:17

标签: java maven junit jmx

我正在从Windows控制台运行maven单元测试:

mvn -Dcom.sun.management.jmxremote ^
-Dcom.sun.management.jmxremote.authenticate=false ^
-Dcom.sun.management.jmxremote.ssl=false ^
-Dcom.sun.management.jmxremote.port=1100 ^
-Dtest=TimetableEngineTest test

然而,在netstat -a中没有显示开放端口1100,并且当选择“添加JMX连接”时,VisualVM无法连接到:127.0.0.1:1100(即使使用我的外部IP也尝试过它)。

我做错了吗?

2 个答案:

答案 0 :(得分:1)

以这种方式运行mvn时,这些参数将被传递到mvn批处理文件中。该批处理文件启动java,但是这样做时它不会传递接收到的相同参数。

对于JVM加载JMX的东西,这些'-D'系统属性参数需要传递到java命令行,但是在这种情况下,JVM是在没有这些参数的情况下启动的,然后是maven java类解析'-D'参数并将它们添加为系统属性。这对于(非JVM启动)系统属性来说很好,但是对于加载JMX来说,它发生得太晚了。

相反,您应该尝试将MAVEN_OPTS环境变量设置为包含

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=1100"

在运行mvn之前。

(注意 - 如果在linux / unix上运行,请记得导出MAVEN_OPTS。)

答案 1 :(得分:0)

我通过在Eclipse中安装“ JVM monitor ”插件解决了这个问题。但是,我不认为这是正确的解决方案。