如何使用多个Java代理启动Java程序?

时间:2009-05-16 15:44:28

标签: jvm javaagents

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

java -javaagent:myAgent.jar MyJavaProgram

但是,如果我想添加2个或更多java代理程序来检测我的程序呢?我不想重新调用java -javaagent:...我必须在JVM中加载每个代理。

我尝试过这样的事情:

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

或类似的东西:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

但没有成功。

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

谢谢。

4 个答案:

答案 0 :(得分:118)

两个javaagent参数怎么样

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

答案 1 :(得分:52)

看起来你可以通过使用多个参数来做到这一点。来自documentation

  

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

-javaagent:jarpath[=options] 
     

jarpath 是代理JAR文件的路径。 选项是代理商选项。 此交换机可在同一命令行中多次使用,从而创建多个代理。多个代理可能使用相同的jarpath。代理JAR文件必须符合JAR文件规范。

(我的重点)

答案 2 :(得分:2)

添加上述答案,如果您使用的是ant并希望将<jvmargs />包含多个jar来-javaagent启动服务器,请按以下步骤操作,< / p>

<强>的build.xml

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

答案 3 :(得分:0)

有一个新项目的目标是支持多个Java代理。目前仅限于特定的。

  

Agent Bond是一个超级代理,可以在其他几个代理上进行包装和发送。这样,您只需使用一组配置数据(包含多个单独的部件)在JVM中安装单个代理程序。

有关详细信息,请参阅https://github.com/fabric8io/agent-bond/blob/master/README.md