mirror of
https://github.com/wahyd4/pinpoint.git
synced 2026-08-19 17:56:41 +10:00
git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-tomcat-profiler/trunk@453 84d0f5b1-2673-498c-a247-62c4ff18d310
52 lines
1.6 KiB
Java
52 lines
1.6 KiB
Java
package com.profiler.modifier.tomcat;
|
|
|
|
import static com.profiler.config.TomcatProfilerConstant.CLASS_NAME_AGENT_STATE_MANAGER;
|
|
|
|
import com.profiler.modifier.AbstractModifier;
|
|
|
|
import javassist.ClassPool;
|
|
import javassist.CtClass;
|
|
import javassist.CtMethod;
|
|
|
|
/**
|
|
* When org.apache.catalina.core.StandardService class is loaded in ClassLoader,
|
|
* this class modifies methods.
|
|
*
|
|
* @author cowboy93
|
|
*
|
|
*/
|
|
public class TomcatStandardServiceModifier extends AbstractModifier {
|
|
public static byte[] modify(ClassPool classPool, ClassLoader classLoader,
|
|
String javassistClassName, byte[] classFileBuffer) {
|
|
// printClassInfo(javassistClassName);
|
|
return changeMethod(classPool, classLoader, javassistClassName,
|
|
classFileBuffer);
|
|
}
|
|
|
|
public static byte[] changeMethod(ClassPool classPool,
|
|
ClassLoader classLoader, String javassistClassName,
|
|
byte[] classfileBuffer) {
|
|
try {
|
|
CtClass cc = classPool.get(javassistClassName);
|
|
CtMethod startMethod = cc.getDeclaredMethod("start", null);
|
|
startMethod
|
|
.insertBefore("{"
|
|
+ "System.out.println(\"*** Start TomcatProfiler JVMStat Thread ***\");"
|
|
+ CLASS_NAME_AGENT_STATE_MANAGER
|
|
+ ".startJVMTraceThread();" + "}");
|
|
CtMethod stopMethod = cc.getDeclaredMethod("stop", null);
|
|
stopMethod
|
|
.insertBefore("{"
|
|
+ "System.out.println(\"*** TomcatProfiler send JVM is stopped info ***\");"
|
|
+ CLASS_NAME_AGENT_STATE_MANAGER
|
|
+ ".sendJVMStoppedInfo();" + "}");
|
|
|
|
printClassConvertComplete(javassistClassName);
|
|
return cc.toBytecode();
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
return null;
|
|
}
|
|
}
|