【问题标题】:JMX Profiling does not work with mavenJMX 分析不适用于 maven
【发布时间】:2013-10-13 13:51:16
【问题描述】:

我正在从 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,而VisualVM则无法连接到: 127.0.0.1:1100选择“添加JMX连接”(即使使用外部IP我也尝试过)。

)。)。

我做错了吗?

【问题讨论】:

  • VisualVM 可以连接到同一台机器上的一个进程,而无需设置任何选项。您确定程序在您有机会连接之前还没有完成吗?
  • 我所做的是在我的 IDE 中分析我的单元测试。我选择测试并单击选择配置文件。
  • 是的,我绝对确定进程正在运行。
  • 在这种情况下,VisualM 应该能够在不更改设置的情况下连接它。 jps -lvm 可以看到吗?
  • 是的,jps可以看到。我的机器上有多个 JVM,是否有可能是 VisualJVM 在不同的 JVM 上运行的原因?

标签: java maven junit jmx


【解决方案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。)

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2020-07-29
      • 2018-02-20
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      相关资源
      最近更新 更多