我正在使用tomcat7實例來運行Java應用程序。我的應用程序需要暴露的Java工具。這是通過一個javaagent完成的,我在啓動時將代理傳遞給setenv.bat腳本中的JVM。無法爲tomcat公開Java Instrumentation jvm
set JAVA_OPTS=%JAVA_OPTS% -javaagent:"C:\path\to\agent.jar"
在清單文件I具有所需的部分:
Premain-Class: package.name.agent.ExposeInstrumentation
在代理類的的premain方法通過一個靜態方法分配由JVM提供給一個靜態變量訪問儀表
public final class ExposeInstrumentation {
private static Instrumentation s_instrumentation;
public static void premain(String arguments, Instrumentation instrumentation) {
s_instrumentation = instrumentation;
}
public static Instrumentation getInstrumentation() {
return s_instrumentation;
}
}
但在我的代碼時,我這樣做:
Instrumentation instrumentation = ExposeInstrumentation.getInstrumentation();
getInstrumentation()返回null;
什麼問題?
UPDATE
我做了一些進一步的調試和倍美力會被執行並且s_instrumentation接收儀器,但是當我在我的代碼s_instumentation後來打電話getInstrumentation設置爲null。這是奇怪的,我認爲價值仍然是有效的思考方案的生命。
實際上是否調用了'premain'方法? – Berger
premain被執行,但我沒有得到任何儀器 – dragosb