【问题标题】:How to run java agent on Corda node by configuring jvm args in gradle build?如何通过在 gradle build 中配置 jvm args 在 Corda 节点上运行 java 代理?
【发布时间】:2020-12-29 17:57:31
【问题描述】:

我正在尝试运行一个 JavaAgent 来监控一个或多个 Corda 节点上的代码执行,以便在我的功能测试运行时跟踪它们的覆盖率。

Corda docs 说您可以通过将其添加到我的节点规范中来添加 JVM 参数:

custom = {
   jvmArgs: [ "-javaAgent:/Path/To/Agent/jacoco-agent.jar=config-file=/Path/To/Agent/jacoco-agent.config",  "-Xmx1G", "-XX:+UseG1GC" ]
}

似乎我必须将其添加到每个节点的配置文件中,但有没有办法通过 build.gradle 将其添加到所有节点,例如,代理在节点启动时启动。

【问题讨论】:

    标签: jvm build.gradle corda


    【解决方案1】:

    您可以从build.gradledeployNodes 任务(或net.corda.plugins.Cordform 类型的任何任务)的nodenodeDefaults 部分编辑生成节点的node.conf,因此您可以简单地使用

    node {
        extraConfig = ['custom.jvmArgs': ["-Xmx1G", "-XX:+UseG1GC"]]
    }
    

    请注意,在 Groovy 中,列表和字典都使用方括号语法 例如

    ["key" : "value", "key2" : true, "key3" : 42]
    

    【讨论】:

    • 谢谢!我设法添加了这个并构建了所有东西,但我的代理没有附加。日志中没有提到它。如果我尝试完全相同但使用上面的论点,我会在 [main] internal.Node 下看到它们。 - 命令行参数:日志中的“Xmx1G”-XX:+UseG1GC。如果我使用 -javaagent 参数,它就像忽略一样。有什么建议如何调试吗?
    • 如果拼写错误会损坏吗?喜欢-jvaagent
    • 确实如此。无法识别的选项:-jvaagent:
    • 您的测试运行情况如何?您是否手动启动节点?
    • 我现在不运行任何测试。我只运行 deployNodes 和 runnodes,然后检查 /logs 文件夹以查看 javaagent 是否被拾取。我的 agent-jar 的路径是系统上的绝对路径。它应该与项目文件夹相关吗?
    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2020-07-19
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多