2016-04-11 4 views
0

Ich habe erfahren, dass Jmockit benutzerdefinierte Ladeprogramm nicht verwendet, um den statischen Aufruf zu verspotten, sondern stattdessen den Java-Agenten verwendet.Wie statische Aufrufe mit Java-Agent wie in jmockit verspottet werden?

Ich bin mir bewusst, es durch benutzerdefinierte Klassenlader zu tun. Kann jemand erklären, wie Java-Agent hier auf hoher Ebene hilft?

Ich glaube, dass Java-Agent den Anruf abfangen und Stub anstelle der ursprünglichen Implementierung aufrufen muss.
Aber wie hilft Java-Agent hier bei der Überwachung als in der Regel durch Proxy?

Antwort

1

Soweit ich mich erinnere mit einem Java-Agent können Sie die Klassenobjekte manipulieren, wie sie geladen werden. Also kann JMockit einfach alles in die gewünschte Klasse einfügen. oder Bedürfnisse.

Hier finden Sie eine Anleitung, die eine Einführung über Java-Agenten und zum Erstellen einige gibt: http://www.javabeat.net/introduction-to-java-agents/

+0

Sie First Class in Class-Loader ersetzt geladen (keine benutzerdefinierten Klassenlader), einmal geladen Java-Agent den Bytecode selbst in beladenem manipulieren Instanz richtig? Wenn ja, zu welchem ​​Zeitpunkt manipuliert Java Agent die Klassendefinition? wenn gerade nach der Klasse geladen, wie Java-Agent erfahren, dass das Laden von Klassen für jede Klasse abgeschlossen ist? – emilly

+0

Hast du überhaupt den Link gelesen, den ich dir oben gegeben habe? Der Agent registriert Transformatoren in der Instrumentierungsinstanz der agent-premain-Methode, und die JVM ruft dann diese Transformer auf, wenn eine Klasse geladen wird. Aber eigentlich denke ich, dass es JMockit nicht tut, da Sie JMockit ohne den Java-Agenten verwenden können. Der Agent führt nur eine Initialisierung durch, die Sie auf andere Weise durchführen können. – Vampire

+0

Vielen Dank Bjorn – emilly

0

Java-Agent bietet die Möglichkeit der Wieder Festlegung des Inhalts der Klasse, die zur Laufzeit geladen wird.

Also, was es die tatsächliche statische Methode mit Stub-Implementierung die zur Laufzeit

Verwandte Themen