Hallo,
erstmal Lob für das hilfreiche und aufgeräumte Forum!
Mein Problem:
Im Eclipse läuft es, im Tomcat nicht.
Die Aufgabe ist die Instrumentierung von Bytecode, durch einen Javaagenten.
Eclipse
Der Agent wird über die Java-Option „-javaagent:agentenpfad“ übergeben.
Der Namespace java.lang.instrument bietet dabei die Funktionalität der Instrumentierung.
Der Agent enthält eine premain-Methode. Diese erhält von der JVM eine Instrumentierung.
An dieser kann der Agent einen Klassentransformer anmelden.
Die Anmeldung bewirkt, dass Bytecode vor dem Laden an den Transformer gesendet wird
und erst danach in den ClassLoader kommt.
FUNKTIONIERT
Tomcat
Hier wird der Agent ebenfalls über die „-javaagent“ Option geladen. Ich weiß nämlich nicht, wie ich an die Instrumentierung komme, ohne dies zu tun.
Das Problem scheint zu sein, dass dadurch der Agent vom SystemClassLoader geladen wird. Die Applikationen (/webapps) jedoch vom
WebAppClassLoader. Somit werden die Klassen nicht vom Agenten gesehen und können nicht instrumentiert werden.
Hat da jemand einen Tip oder schon Erfahrungen gemacht!?
erstmal Lob für das hilfreiche und aufgeräumte Forum!
Mein Problem:
Im Eclipse läuft es, im Tomcat nicht.
Die Aufgabe ist die Instrumentierung von Bytecode, durch einen Javaagenten.
Eclipse
Der Agent wird über die Java-Option „-javaagent:agentenpfad“ übergeben.
Der Namespace java.lang.instrument bietet dabei die Funktionalität der Instrumentierung.
Der Agent enthält eine premain-Methode. Diese erhält von der JVM eine Instrumentierung.
An dieser kann der Agent einen Klassentransformer anmelden.
Die Anmeldung bewirkt, dass Bytecode vor dem Laden an den Transformer gesendet wird
und erst danach in den ClassLoader kommt.
FUNKTIONIERT
Tomcat
Hier wird der Agent ebenfalls über die „-javaagent“ Option geladen. Ich weiß nämlich nicht, wie ich an die Instrumentierung komme, ohne dies zu tun.
Das Problem scheint zu sein, dass dadurch der Agent vom SystemClassLoader geladen wird. Die Applikationen (/webapps) jedoch vom
WebAppClassLoader. Somit werden die Klassen nicht vom Agenten gesehen und können nicht instrumentiert werden.
Hat da jemand einen Tip oder schon Erfahrungen gemacht!?
Comment