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


81

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

java -javaagent:myAgent.jar MyJavaProgram

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

我已经尝试过这样的事情:

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

或类似这样的东西:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

但是没有成功。

有解决我问题的答案吗?

谢谢。

Answers:



56

看来您可以通过使用多个参数来执行此操作。从文档中

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

-javaagent:jarpath[=options] 

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

(我的重点)


2

如果您使用的是ant并想包含<jvmargs />多个罐子,则添加到上述答案中-javaagent来启动服务器,则这是我的方法,

build.xml

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

1

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

特工邦德是一个超级特工,它包装并分派其他几个特工。这样,您只需要在JVM内安装具有单个配置数据集(包含多个单独的部分)的单个代理即可。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.