Java Agent, Instrumentation und Array -Schöpfung
-
15-10-2019 - |
Frage
Ich muss einen Agenten für meine Java -Anwendung schreiben, die bei jeder Array -Kreation bestimmte Dinge ausführt. Bisher konnte ich keine Möglichkeit finden, meinen Code auf diesem Ereignis auszuführen.
- java.lang.instrument.classFileTransformer erhält keine "Array -Klassen", also keine Möglichkeit, sich in "Konstruktor von Array" zu beschäftigen. Und "Array -Klassen sind nie verändert"
- Kein JVMTI -Ereignis entspricht diesem
Irgendwelche Vorschläge?
Lösung
Sie müssen den Byte-Code Ihrer Anwendung dazu ändern. Ich habe gefunden Objektweb ASM das beste Werkzeug für den Job zu sein. Die allgemeine Idee ist zu:
- Erstellen Sie einen JVMTI -Agenten, der die Klassen abfängt, an denen Sie interessiert sind.
- Übergeben Sie die Klassen, die Sie an einen ASM -Klasse -Transformator instrumentieren möchten.
- Im Klassentransformator können Sie die Java -Opcodes abfangen, die mit dem Bau eines Arrays, z. JVM Spec für mehr).
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow