Wie starte ich mein Java-Programm mit mehr als einem Java-Agenten?

81

Mir ist bekannt, wie man ein Java-Programm mit einem Java-Agenten startet:

java -javaagent:myAgent.jar MyJavaProgram

Aber was ist, wenn ich zwei oder mehr Java-Agenten hinzufügen möchte, um mein Programm zu instrumentieren? Ich möchte den Java-Java-Agenten nicht erneut aufrufen: ... für jeden Agenten, den ich in JVM laden muss.

Ich habe so etwas versucht:

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

oder so ähnlich:

java -javaagent:agentA.jar agentB.jar MyJavaProgram

Aber keinen Erfolg.

Gibt es eine Antwort, um mein Problem zu lösen?

Vielen Dank.

Flueras Bogdan
quelle

Antworten:

141

Wie wäre es mit zwei javaagentParametern?

java -javaagent:agentA.jar -javaagent:agentB.jar MyJavaProgram
Tahir Akhtar
quelle
56

Es scheint, dass Sie dies mit mehreren Argumenten tun können. Aus der Dokumentation :

Bei Implementierungen mit einer Befehlszeilenschnittstelle wird ein Agent gestartet, indem diese Option zur Befehlszeile hinzugefügt wird:

-javaagent:jarpath[=options] 

jarpath ist der Pfad zur JAR-Datei des Agenten. options ist die Agentenoption. Dieser Schalter kann mehrmals in derselben Befehlszeile verwendet werden, wodurch mehrere Agenten erstellt werden . Es können mehrere Agenten denselben Jarpath verwenden. Eine Agent-JAR-Datei muss der JAR-Dateispezifikation entsprechen.

(meine Betonung)

Brian Agnew
quelle
2

Wenn Sie zu den obigen Antworten hinzufügen und ant verwenden und <jvmargs />mehr als eine JAR-Datei -javaagentzum Starten des Servers verwenden möchten, habe ich Folgendes getan:

build.xml

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

Es gibt ein neues Projekt mit dem Ziel, mehrere Java-Agenten zu unterstützen. Derzeit ist es auf bestimmte beschränkt.

Agent Bond ist ein Superagent, der mehrere andere Agenten einpackt und versendet. Auf diese Weise müssen Sie nur einen einzelnen Agenten in Ihrer JVM mit einem einzigen Satz von Konfigurationsdaten installieren (der mehrere separate Teile enthält).

Weitere Informationen finden Sie unter https://github.com/fabric8io/agent-bond/blob/master/README.md

Marged
quelle