如何在Java程序中使用多个java agent启动?

99

我知道如何使用Java代理启动Java程序:

java -javaagent:myAgent.jar MyJavaProgram

如果我想添加两个或更多java代理来检测我的程序怎么办?我不想为每个代理在JVM中加载而重新调用java -javaagent:...。

我尝试过类似这样的内容:

java -javaagent:agentA.jar, agentB.jar MyJavaProgram

或者类似这样的:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

但是一直没有成功。

有没有解决我的问题的答案?

谢谢。

4个回答

171

两个javaagent参数怎么样?

java -javaagent:agentA.jar -javaagent:agentB.jar MyJavaProgram

64

看起来您可以通过使用多个参数来实现这一点。根据文档

在具有命令行界面的实现中,通过将此选项添加到命令行来启动代理:

-javaagent:jarpath[=options] 

jarpath 是代理 JAR 文件的路径。 options 是代理选项。 此开关可以在同一命令行上多次使用,从而创建多个代理。 多个代理可以使用相同的 jarpath。代理 JAR 文件必须符合 JAR 文件规范。

(我的强调)


2

除了上面的回答外,如果您正在使用ant并想在多个jar文件中包含<jvmargs />来启动服务器的-javaagent,以下是我所做的方法:

build.xml

<target name="blah">
...
    <jvmarg value="-javaagent:${jar1.path}" />
    <jvmarg value="-javaagent:${jar2.path}" />
...
</target>

1

有一个新项目,旨在支持多个Java代理。目前它仅限于特定的代理。

Agent Bond是一个超级代理,它包装并分派多个其他代理。这样,您只需在JVM中安装一个单一代理,具有单一的配置数据集(其中包含多个独立部分)。

详见https://github.com/fabric8io/agent-bond/blob/master/README.md


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接