我知道如何使用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
但没有成功。
有没有解决我问题的答案?
谢谢。
答案 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