Hallo Profis,
ich muss in einem Projekt Bytecode Transformations machen. Dafür verwende ich die instrumentation API und die javassist API. Damit komm ich recht gut klar. Aber ich hab leider noch nicht so recht verstanden, wie das ganze genau abläuft. Ich hab´s folgendermaßen verstanden:
- Class Loader lädt eine Klasse
- Class Loader (oder JVM?) ruft die premain()-Methode meines Agenten auf
- Agent erzeugt einen Transformer und registriert ihn an einem Instrumentation-Objekt
- Agent ruft Transformer´s transform()-Methode auf
- Transformer transformiert Bytecode und gibt geänderten Bytecode an Agent zurück
- Agent gibt Bytecode an JVM weiter
- JVM führt Bytecode aus
Ich würd das ganze eigentlich gern in einem Sequenzdiagramm darstellen, aber
wie passt dieses Instrumentation-Objekt da rein?
ruft der Class Loader oder die JVM den Agenten auf?
wird eine Transformation direkt nach dem laden einer Klasse durchgeführt, dann die Klasse ausgeführt oder werden erst alle Klassen transformiert und dann alle ausgeführt?
naja, Fragen über Fragen...
Vielleicht weiß ja von euch einer Bescheid, im Internet find ich leider keine Klassendiagramme, Sequenzdiagramme oder sowas in der Richtung.
Danke schon mal
ich muss in einem Projekt Bytecode Transformations machen. Dafür verwende ich die instrumentation API und die javassist API. Damit komm ich recht gut klar. Aber ich hab leider noch nicht so recht verstanden, wie das ganze genau abläuft. Ich hab´s folgendermaßen verstanden:
- Class Loader lädt eine Klasse
- Class Loader (oder JVM?) ruft die premain()-Methode meines Agenten auf
- Agent erzeugt einen Transformer und registriert ihn an einem Instrumentation-Objekt
- Agent ruft Transformer´s transform()-Methode auf
- Transformer transformiert Bytecode und gibt geänderten Bytecode an Agent zurück
- Agent gibt Bytecode an JVM weiter
- JVM führt Bytecode aus
Ich würd das ganze eigentlich gern in einem Sequenzdiagramm darstellen, aber
wie passt dieses Instrumentation-Objekt da rein?
ruft der Class Loader oder die JVM den Agenten auf?
wird eine Transformation direkt nach dem laden einer Klasse durchgeführt, dann die Klasse ausgeführt oder werden erst alle Klassen transformiert und dann alle ausgeführt?
naja, Fragen über Fragen...
Vielleicht weiß ja von euch einer Bescheid, im Internet find ich leider keine Klassendiagramme, Sequenzdiagramme oder sowas in der Richtung.
Danke schon mal