Jacoco jmx 转储,连接重置错误

Jacoco jmx dump, Connection reset error

我 运行宁 tomcat 有这样的 jacoco 代理:

-javaagent:/path_to_jar/jacocoagent.jar=jmx=true,output=tcpclient,port=8001

我知道这是有效的,因为 lsof 命令列出了 88208 TCP localhost:**8001** (LISTEN).

当我 运行 这个例子 codePORT = 8001; 我得到错误: Exception in thread "main" java.net.SocketException: Connection reset

这似乎是来自 jacoco 的旧示例。我需要访问 tcp 服务器的方式有什么变化吗?我还尝试通过他们的 MBeanClient 访问 jacoco,但它给了我一个 InstanceNotFoundException 并且当我打印出所有域时,似乎 tomcat 没有将 "org.jacoco:type=Runtime" 列为 bean。

对这两个选项有什么建议吗?我只需要能够在不停止服务器的情况下获取转储文件。

事实证明我在启动服务器时需要更多 java 个参数:

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

没有这些 JMX 就无法在我的本地主机上将 jacoco 视为一个 bean。

(这也适用于 glassfish,但需要使用 <jvm-options> 进行设置)