diff --git a/src/main/java/com/profiler/interceptor/bci/InstrumentClass.java b/src/main/java/com/profiler/interceptor/bci/InstrumentClass.java index 97d7d4330..a191f1ad1 100644 --- a/src/main/java/com/profiler/interceptor/bci/InstrumentClass.java +++ b/src/main/java/com/profiler/interceptor/bci/InstrumentClass.java @@ -10,6 +10,9 @@ public interface InstrumentClass { int addConstructorInterceptor(String[] args, Interceptor interceptor) throws InstrumentException, NotFoundInstrumentException; + int reuseInterceptor(String methodName, String[] args, int interceptorId) throws InstrumentException, NotFoundInstrumentException; + + int addInterceptor(String methodName, String[] args, Interceptor interceptor) throws InstrumentException, NotFoundInstrumentException; int addInterceptor(String methodName, String[] args, Interceptor interceptor, Type type) throws InstrumentException, NotFoundInstrumentException; diff --git a/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java b/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java index 5d31a5a62..b77e74ce7 100644 --- a/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java +++ b/src/main/java/com/profiler/interceptor/bci/JavaAssistClass.java @@ -119,18 +119,32 @@ public class JavaAssistClass implements InstrumentClass { } public int addConstructorInterceptor(String[] args, Interceptor interceptor) throws InstrumentException, NotFoundInstrumentException { - return addInterceptor0(null, args, interceptor, Type.auto); + if (interceptor == null) { + throw new IllegalArgumentException("interceptor is null"); + } + return addInterceptor0(null, args, interceptor, -1, Type.auto); } @Override public int addInterceptor(String methodName, String[] args, Interceptor interceptor) throws InstrumentException, NotFoundInstrumentException { - return addInterceptor0(methodName, args, interceptor, Type.auto); + if (interceptor == null) { + throw new IllegalArgumentException("interceptor is null"); + } + return addInterceptor0(methodName, args, interceptor, -1, Type.auto); } + @Override + public int reuseInterceptor(String methodName, String[] args, int interceptorId) throws InstrumentException, NotFoundInstrumentException { + return addInterceptor0(methodName, args, null, interceptorId, Type.auto); + } + @Override public int addInterceptor(String methodName, String[] args, Interceptor interceptor, Type type) throws InstrumentException, NotFoundInstrumentException { - return addInterceptor0(methodName, args, interceptor, type); + if (interceptor == null) { + throw new IllegalArgumentException("interceptor is null"); + } + return addInterceptor0(methodName, args, interceptor, -1, type); } private CtBehavior getBehavior(String methodName, String[] args) throws NotFoundException { @@ -140,10 +154,7 @@ public class JavaAssistClass implements InstrumentClass { return getMethod(methodName, args); } - private int addInterceptor0(String methodName, String[] args, Interceptor interceptor, Type type) throws InstrumentException, NotFoundInstrumentException { - if (interceptor == null) { - throw new IllegalArgumentException("interceptor is null"); - } + private int addInterceptor0(String methodName, String[] args, Interceptor interceptor, int interceptorId,Type type) throws InstrumentException, NotFoundInstrumentException { CtBehavior behavior = null; try { behavior = getBehavior(methodName, args); @@ -152,7 +163,9 @@ public class JavaAssistClass implements InstrumentClass { throw new NotFoundInstrumentException(interceptor.getClass().getSimpleName() + " add fail. Cause:" + e.getMessage(), e); } try { - int interceptorId = InterceptorRegistry.addInterceptor(interceptor); + if (interceptor != null) { + interceptorId = InterceptorRegistry.addInterceptor(interceptor); + } if (type == Type.auto) { if (interceptor instanceof StaticAroundInterceptor) { addStaticAroundInterceptor(methodName, interceptorId, behavior); diff --git a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementMethodInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java similarity index 94% rename from src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementMethodInterceptor.java rename to src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java index 501a91588..8448b01b2 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementMethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/PreparedStatementExecuteQueryInterceptor.java @@ -11,9 +11,9 @@ import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; -public class PreparedStatementMethodInterceptor implements StaticAroundInterceptor { +public class PreparedStatementExecuteQueryInterceptor implements StaticAroundInterceptor { - private final Logger logger = Logger.getLogger(PreparedStatementMethodInterceptor.class.getName()); + private final Logger logger = Logger.getLogger(PreparedStatementExecuteQueryInterceptor.class.getName()); private final MetaObject getSql = new MetaObject("__getSql"); private final MetaObject getUrl = new MetaObject("__getUrl"); diff --git a/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java index aa391e6e5..5dfa73e51 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteQueryInterceptor.java @@ -19,7 +19,7 @@ public class StatementExecuteQueryInterceptor implements StaticAroundInterceptor private final Logger logger = Logger.getLogger(StatementExecuteQueryInterceptor.class.getName()); - private final MetaObject getUrl = new MetaObject("", "__getUrl"); + private final MetaObject getUrl = new MetaObject("__getUrl", String.class); @Override public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) { diff --git a/src/main/java/com/profiler/modifier/db/interceptor/ExecuteUpdateMethodInterceptor.java b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java similarity index 54% rename from src/main/java/com/profiler/modifier/db/interceptor/ExecuteUpdateMethodInterceptor.java rename to src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java index cf9a7424e..03f42dd28 100644 --- a/src/main/java/com/profiler/modifier/db/interceptor/ExecuteUpdateMethodInterceptor.java +++ b/src/main/java/com/profiler/modifier/db/interceptor/StatementExecuteUpdateInterceptor.java @@ -4,27 +4,30 @@ import com.profiler.StopWatch; import com.profiler.context.Annotation; import com.profiler.context.Trace; import com.profiler.interceptor.StaticAroundInterceptor; +import com.profiler.util.MetaObject; +import com.profiler.util.StringUtils; +import java.util.Arrays; import java.util.logging.Level; import java.util.logging.Logger; /** - * protected int executeUpdate(String sql, boolean isBatch, boolean - * returnGeneratedKeys) + * protected int executeUpdate(String sql, boolean isBatch, boolean returnGeneratedKeys) * * @author netspider */ -public class ExecuteUpdateMethodInterceptor implements StaticAroundInterceptor { +public class StatementExecuteUpdateInterceptor implements StaticAroundInterceptor { - private final Logger logger = Logger.getLogger(ExecuteUpdateMethodInterceptor.class.getName()); + private final Logger logger = Logger.getLogger(StatementExecuteUpdateInterceptor.class.getName()); + + private final MetaObject getUrl = new MetaObject("__getUrl", String.class); @Override public void before(Object target, String className, String methodName, String parameterDescription, Object[] args) { - System.out.println("ExecuteUpdateMethodInterceptor.before"); + if (logger.isLoggable(Level.INFO)) { + logger.info("before " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args)); + } - /** - * If method was not called by request handler, we skip tagging. - */ if (Trace.getCurrentTraceId() == null) { return; } @@ -33,14 +36,15 @@ public class ExecuteUpdateMethodInterceptor implements StaticAroundInterceptor { try { Trace.recordRpcName("mysql", ""); - // TODO: add destination address + if (args.length > 0) { - Trace.recordAttibute("Query", args[0]); + String url = (String) this.getUrl.invoke(target); + Trace.recordAttibute("Query", url); } Trace.record(Annotation.ClientSend); - StopWatch.start("ExecuteUpdateMethodInterceptor"); + StopWatch.start("StatementExecuteUpdateInterceptor"); } catch (Exception e) { if (logger.isLoggable(Level.WARNING)) { logger.log(Level.WARNING, e.getMessage(), e); @@ -52,13 +56,16 @@ public class ExecuteUpdateMethodInterceptor implements StaticAroundInterceptor { @Override public void after(Object target, String className, String methodName, String parameterDescription, Object[] args, Object result) { - System.out.println("ExecuteUpdateMethodInterceptor.after"); + if (logger.isLoggable(Level.INFO)) { + logger.info("after " + StringUtils.toString(target) + " " + className + "." + methodName + parameterDescription + " args:" + Arrays.toString(args) + " result:" + result); + } if (Trace.getCurrentTraceId() == null) { return; } Trace.traceBlockBegin(); - Trace.record(Annotation.ClientRecv, StopWatch.stopAndGetElapsed("ExecuteUpdateMethodInterceptor")); + // TODO 결과, 수행시간을.알수 있어야 될듯. + Trace.record(Annotation.ClientRecv, StopWatch.stopAndGetElapsed("StatementExecuteUpdateInterceptor")); Trace.traceBlockEnd(); } } diff --git a/src/main/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifier.java b/src/main/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifier.java index ba25ee419..bbb9906e7 100644 --- a/src/main/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifier.java +++ b/src/main/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifier.java @@ -36,7 +36,6 @@ public class MySQLConnectionImplModifier extends AbstractModifier { mysqlConnection.addTraceVariable("__url", "__setUrl", "__getUrl", "java.lang.String"); // 해당 Interceptor를 공통클래스 만들경우 system에 로드해야 된다. -// Interceptor createConnection = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.ConnectionCreateInterceptor"); Interceptor createConnection = new ConnectionCreateInterceptor(); String[] params = new String[] { "java.lang.String", "int", "java.util.Properties", "java.lang.String", "java.lang.String" @@ -44,26 +43,21 @@ public class MySQLConnectionImplModifier extends AbstractModifier { mysqlConnection.addInterceptor("getInstance", params, createConnection); -// Interceptor closeConnection = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.ConnectionCloseInterceptor"); Interceptor closeConnection = new ConnectionCloseInterceptor(); mysqlConnection.addInterceptor("close", null, closeConnection); - -// Interceptor createStatement = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.StatementCreateInterceptor"); Interceptor createStatement = new StatementCreateInterceptor(); mysqlConnection.addInterceptor("createStatement", null, createStatement); -// Interceptor preparedStatement = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.PreparedStatementCreateInterceptor"); Interceptor preparedStatement = new PreparedStatementCreateInterceptor(); mysqlConnection.addInterceptor("prepareStatement", new String[]{"java.lang.String"}, preparedStatement); -// Interceptor transaction = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.mysql.interceptors.c"); Interceptor transaction = new TransactionInterceptor(); - mysqlConnection.addInterceptor("setAutoCommit", new String[]{"boolean"}, transaction); - mysqlConnection.addInterceptor("commit", null, transaction); - mysqlConnection.addInterceptor("rollback", null, transaction); + int interceptorId = mysqlConnection.addInterceptor("setAutoCommit", new String[]{"boolean"}, transaction); + mysqlConnection.reuseInterceptor("commit", null, interceptorId); + mysqlConnection.reuseInterceptor("rollback", null, interceptorId); printClassConvertComplete(javassistClassName); @@ -77,25 +71,4 @@ public class MySQLConnectionImplModifier extends AbstractModifier { } -// private void updateCreateStatementMethod(CtClass cc) throws Exception { -// CtMethod method = cc.getDeclaredMethod("createStatement", null); -// method.insertAfter("{" + DatabaseRequestTracer.FQCN + ".put(" + TomcatProfilerConstant.REQ_DATA_TYPE_DB_CREATE_STATEMENT + "); }"); -// } -// -// private void updateGetInstanceMethod(CtClass cc) throws Exception { -// CtClass[] params = new CtClass[5]; -// params[0] = classPool.getCtClass("java.lang.String"); -// params[1] = classPool.getCtClass("int"); -// params[2] = classPool.getCtClass("java.util.Properties"); -// params[3] = classPool.getCtClass("java.lang.String"); -// params[4] = classPool.getCtClass("java.lang.String"); -// CtMethod method = cc.getDeclaredMethod("getInstance", params); -// -// method.insertAfter("{" + DatabaseRequestTracer.FQCN + ".putConnection(" + TomcatProfilerConstant.REQ_DATA_TYPE_DB_GET_CONNECTION + ",$5); }"); -// } -// -// private void updateCloseMethod(CtClass cc) throws Exception { -// CtMethod method = cc.getDeclaredMethod("close", null); -// method.insertAfter("{" + DatabaseRequestTracer.FQCN + ".put(" + TomcatProfilerConstant.REQ_DATA_TYPE_DB_CLOSE_CONNECTION + "); }"); -// } } diff --git a/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementJDBC4Modifier.java b/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementJDBC4Modifier.java index cd1817285..b9ef0ae10 100644 --- a/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementJDBC4Modifier.java +++ b/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementJDBC4Modifier.java @@ -49,15 +49,23 @@ public class MySQLPreparedStatementJDBC4Modifier extends AbstractModifier { } private void bindVariableIntercept(InstrumentClass preparedStatement, ClassLoader classLoader, ProtectionDomain protectedDomain) throws InstrumentException { + // TODO 문자열에 추가로 파라미터 type을 넣어야 될거 같음. + // jdbc 드라이버 마다 구현api가 약간식 차이가 있는데 파라미터 타입이 없을경우, api 판별에 한계가 있음. BindVariableFilter exclude = new IncludeBindVariableFilter(includes); List bindMethod = PreparedStatementUtils.findBindVariableSetMethod(exclude); -// Interceptor interceptor = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.PreparedStatementBindVariableInterceptor"); + // TODO 해당 로직 공통화 필요? + // bci 쪽에 multi api 스펙에 대한 자동으로 인터셉터를 n개 걸어주는 api가 더 좋지 않을까한다. Interceptor interceptor = new PreparedStatementBindVariableInterceptor(); + int interceptorId = -1; for (Method method : bindMethod) { String methodName = method.getName(); String[] parameterType = JavaAssistUtils.getParameterType(method.getParameterTypes()); try { - preparedStatement.addInterceptor(methodName, parameterType, interceptor); + if (interceptorId == -1) { + interceptorId = preparedStatement.addInterceptor(methodName, parameterType, interceptor); + } else { + preparedStatement.reuseInterceptor(methodName, parameterType, interceptorId); + } } catch (NotFoundInstrumentException e) { // bind variable setter메소드를 못찾을 경우는 그냥 경고만 표시, 에러 아님. if (logger.isLoggable(Level.FINE)) { diff --git a/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementModifier.java b/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementModifier.java index 5757eb9be..25b1f4e4d 100644 --- a/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementModifier.java +++ b/src/main/java/com/profiler/modifier/db/mysql/MySQLPreparedStatementModifier.java @@ -8,14 +8,13 @@ import java.util.logging.Logger; import com.profiler.interceptor.bci.InstrumentException; import com.profiler.interceptor.bci.NotFoundInstrumentException; -import com.profiler.modifier.db.interceptor.PreparedStatementMethodInterceptor; +import com.profiler.modifier.db.interceptor.PreparedStatementExecuteQueryInterceptor; import com.profiler.modifier.db.interceptor.PreparedStatementBindVariableInterceptor; import com.profiler.util.ExcludeBindVariableFilter; import com.profiler.util.JavaAssistUtils; import com.profiler.util.PreparedStatementUtils; import javassist.CtClass; import javassist.CtConstructor; -import javassist.CtMethod; import com.profiler.config.TomcatProfilerConstant; import com.profiler.interceptor.Interceptor; @@ -46,8 +45,8 @@ public class MySQLPreparedStatementModifier extends AbstractModifier { checkLibrary(classLoader, javassistClassName); try { InstrumentClass preparedStatement = byteCodeInstrumentor.getClass(javassistClassName); -// Interceptor interceptor = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.PreparedStatementMethodInterceptor"); - Interceptor interceptor = new PreparedStatementMethodInterceptor(); + + Interceptor interceptor = new PreparedStatementExecuteQueryInterceptor(); preparedStatement.addInterceptor("executeQuery", null, interceptor); preparedStatement.addTraceVariable("__url", "__setUrl", "__getUrl", "java.lang.String"); @@ -81,13 +80,18 @@ public class MySQLPreparedStatementModifier extends AbstractModifier { private void bindVariableIntercept(InstrumentClass preparedStatement, ClassLoader classLoader, ProtectionDomain protectedDomain) throws InstrumentException { ExcludeBindVariableFilter exclude = new ExcludeBindVariableFilter(excludes); List bindMethod = PreparedStatementUtils.findBindVariableSetMethod(exclude); -// Interceptor interceptor = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.PreparedStatementBindVariableInterceptor"); + Interceptor interceptor = new PreparedStatementBindVariableInterceptor(); + int interceptorId = -1; for (Method method : bindMethod) { String methodName = method.getName(); String[] parameterType = JavaAssistUtils.getParameterType(method.getParameterTypes()); try { - preparedStatement.addInterceptor(methodName, parameterType, interceptor); + if (interceptorId == -1) { + interceptorId = preparedStatement.addInterceptor(methodName, parameterType, interceptor); + } else { + preparedStatement.reuseInterceptor(methodName, parameterType, interceptorId); + } } catch (NotFoundInstrumentException e) { // bind variable setter메소드를 못찾을 경우는 그냥 경고만 표시, 에러 아님. if (logger.isLoggable(Level.FINE)) { @@ -99,41 +103,6 @@ public class MySQLPreparedStatementModifier extends AbstractModifier { } - private byte[] changeMethod(String javassistClassName, byte[] classfileBuffer) { - try { - CtClass cc = classPool.get(javassistClassName); - - updateSetInternalMethod(cc); - updateExecuteQueryMethod(cc); - updateConstructor(cc); - - printClassConvertComplete(javassistClassName); - - return cc.toBytecode(); - } catch (Exception e) { - if (logger.isLoggable(Level.WARNING)) { - logger.log(Level.WARNING, e.getMessage(), e); - } - } - return null; - } - - private void updateSetInternalMethod(CtClass cc) throws Exception { - CtClass[] params1 = new CtClass[2]; - params1[0] = classPool.getCtClass("int"); - params1[1] = classPool.getCtClass("java.lang.String"); - CtMethod method1 = cc.getDeclaredMethod("setInternal", params1); - - method1.insertBefore("{" + DatabaseRequestTracer.FQCN + ".putSqlParam($1,$2); }"); - - CtClass[] params2 = new CtClass[2]; - params2[0] = classPool.getCtClass("int"); - params2[1] = classPool.getCtClass("byte[]"); - CtMethod method2 = cc.getDeclaredMethod("setInternal", params2); - - method2.insertBefore("{" + DatabaseRequestTracer.FQCN + ".putSqlParam($1,$2); }"); - } - private void updateConstructor(CtClass cc) throws Exception { CtConstructor[] constructorList = cc.getConstructors(); if (constructorList.length == 3) { @@ -146,8 +115,5 @@ public class MySQLPreparedStatementModifier extends AbstractModifier { } } - private void updateExecuteQueryMethod(CtClass cc) throws Exception { - CtMethod method = cc.getDeclaredMethod("executeQuery", null); - method.insertAfter("{System.out.println(\"EXECUTE QUERY\");" + DatabaseRequestTracer.FQCN + ".put(" + TomcatProfilerConstant.REQ_DATA_TYPE_DB_EXECUTE_QUERY + "); }"); - } + } diff --git a/src/main/java/com/profiler/modifier/db/mysql/MySQLResultSetModifier.java b/src/main/java/com/profiler/modifier/db/mysql/MySQLResultSetModifier.java index 99cf58998..b2d8aec72 100644 --- a/src/main/java/com/profiler/modifier/db/mysql/MySQLResultSetModifier.java +++ b/src/main/java/com/profiler/modifier/db/mysql/MySQLResultSetModifier.java @@ -10,7 +10,7 @@ import com.profiler.trace.DatabaseRequestTracer; import java.security.ProtectionDomain; import java.util.logging.Level; import java.util.logging.Logger; - +// TODO 추가 개발해야 될듯. public class MySQLResultSetModifier extends AbstractModifier { private final Logger logger = Logger.getLogger(MySQLResultSetModifier.class.getName()); diff --git a/src/main/java/com/profiler/modifier/db/mysql/MySQLStatementModifier.java b/src/main/java/com/profiler/modifier/db/mysql/MySQLStatementModifier.java index c376774ce..ca5ee213f 100644 --- a/src/main/java/com/profiler/modifier/db/mysql/MySQLStatementModifier.java +++ b/src/main/java/com/profiler/modifier/db/mysql/MySQLStatementModifier.java @@ -33,13 +33,12 @@ public class MySQLStatementModifier extends AbstractModifier { try { InstrumentClass statementClass = byteCodeInstrumentor.getClass(javassistClassName); -// Interceptor interceptor = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.StatementExecuteQueryInterceptor"); Interceptor interceptor = new StatementExecuteQueryInterceptor(); statementClass.addInterceptor("executeQuery", new String[]{"java.lang.String"}, interceptor); - - Interceptor interceptor1 = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.ExecuteUpdateMethodInterceptor"); - statementClass.addInterceptor("executeUpdate", new String[]{"java.lang.String", "boolean", "boolean"}, interceptor1); + // TODO 이거 고쳐야 됨. + Interceptor executeUpdate = newInterceptor(classLoader, protectedDomain, "com.profiler.modifier.db.interceptor.StatementExecuteUpdateInterceptor"); + statementClass.addInterceptor("executeUpdate", new String[]{"java.lang.String", "boolean", "boolean"}, executeUpdate); statementClass.addTraceVariable("__url", "__setUrl", "__getUrl", "java.lang.String"); return statementClass.toBytecode(); diff --git a/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java b/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java index 47204f8bc..eb2bd20ee 100644 --- a/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java +++ b/src/test/java/com/profiler/modifier/db/mysql/MySQLConnectionImplModifierTest.java @@ -33,7 +33,6 @@ public class MySQLConnectionImplModifierTest { MySQLPreparedStatementJDBC4Modifier preparedStatementJDBC4Modifier = new MySQLPreparedStatementJDBC4Modifier(loader.getInstrumentor()); loader.addModifier(preparedStatementJDBC4Modifier); -// loader.delegateLoadingOf(ConnectionTrace.class.getName()); loader.initialize(); } diff --git a/src/test/java/com/profiler/util/TestClassLoader.java b/src/test/java/com/profiler/util/TestClassLoader.java index 3d40567bd..e389a7b0f 100644 --- a/src/test/java/com/profiler/util/TestClassLoader.java +++ b/src/test/java/com/profiler/util/TestClassLoader.java @@ -53,7 +53,6 @@ public class TestClassLoader extends Loader { this.delegateLoadingOf(StaticBeforeInterceptor.class.getName()); this.delegateLoadingOf(StaticAfterInterceptor.class.getName()); this.delegateLoadingOf(InterceptorRegistry.class.getName()); -// this.delegateLoadingOf(ConnectionTrace.class.getName()); this.delegateLoadingOf(Trace.class.getName()); this.delegateLoadingOf(Annotation.class.getName()); this.delegateLoadingOf(StopWatch.class.getName());