From dd27fad3e2f5fcde78fa4c72706e4f2e76735a10 Mon Sep 17 00:00:00 2001 From: wusheng Date: Sun, 31 Jul 2016 08:40:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3IPlugin=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BB=A5=E5=8F=8AIBootPluginDefine=EF=BC=8C=E5=8F=8A=E5=85=B6?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=AE=9E=E7=8E=B0=E3=80=82=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=9A=84=E4=B8=80=E8=87=B4=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud/skywalking/agent/SkywalkingAgent.java | 10 +++++----- .../plugin/AbstractClassEnhancePluginDefine.java | 8 +------- .../com/ai/cloud/skywalking/plugin/IPlugin.java | 3 --- .../skywalking/plugin/PluginDefineCategory.java | 12 ++++++------ .../skywalking/plugin/TracingBootstrap.java | 13 +++++++++---- .../skywalking/plugin/boot/BootPluginDefine.java | 16 ---------------- .../plugin/boot/IBootPluginDefine.java | 9 +++++++++ .../ai/cloud/matcher/ExclusionMatcherTest.java | 4 +++- ...CPluginDefine.java => JDBCPluginDefineI.java} | 9 ++++----- .../src/main/resources/skywalking-plugin.def | 2 +- .../reciever/peresistent/PersistenceThread.java | 1 - 11 files changed, 38 insertions(+), 49 deletions(-) delete mode 100644 skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/BootPluginDefine.java create mode 100644 skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java rename skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{JDBCPluginDefine.java => JDBCPluginDefineI.java} (89%) diff --git a/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkywalkingAgent.java b/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkywalkingAgent.java index 438b508fd..e3222f3b9 100644 --- a/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkywalkingAgent.java +++ b/skywalking-collector/skywalking-agent/src/main/java/com/ai/cloud/skywalking/agent/SkywalkingAgent.java @@ -5,7 +5,7 @@ import com.ai.cloud.skywalking.conf.ConfigInitializer; import com.ai.cloud.skywalking.logging.LogManager; import com.ai.cloud.skywalking.logging.Logger; import com.ai.cloud.skywalking.plugin.*; -import com.ai.cloud.skywalking.plugin.boot.BootPluginDefine; +import com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine; import net.bytebuddy.agent.builder.AgentBuilder; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.dynamic.DynamicType; @@ -35,7 +35,7 @@ public class SkywalkingAgent { } try { - return pluginDefine.define0(builder); + return pluginDefine.define(builder); } catch (PluginException e) { logger.error("Failed to enhance plugin " + pluginDefine.getClass().getName(), e); return builder; @@ -47,9 +47,9 @@ public class SkywalkingAgent { } - public static void startBootPluginDefines(List bootPluginDefines) throws PluginException { - for (BootPluginDefine bootPluginDefine : bootPluginDefines) { - bootPluginDefine.define(null); + public static void startBootPluginDefines(List IBootPluginDefines) throws PluginException { + for (IBootPluginDefine bootPluginDefine : IBootPluginDefines) { + bootPluginDefine.boot(); } } } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/AbstractClassEnhancePluginDefine.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/AbstractClassEnhancePluginDefine.java index 0107eec33..b9ab16b47 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/AbstractClassEnhancePluginDefine.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/AbstractClassEnhancePluginDefine.java @@ -14,13 +14,7 @@ import static com.ai.cloud.skywalking.plugin.PluginBootstrap.CLASS_TYPE_POOL; public abstract class AbstractClassEnhancePluginDefine implements IPlugin { private static Logger logger = LogManager.getLogger(AbstractClassEnhancePluginDefine.class); - @Override - public void define(DynamicType.Builder builder) throws PluginException { - builder = define0(builder); - builder.name(enhanceClassName()).make().load(ClassLoader.getSystemClassLoader(), ClassLoadingStrategy.Default.INJECTION).getLoaded(); - } - - public DynamicType.Builder define0(DynamicType.Builder builder) throws PluginException { + public DynamicType.Builder define(DynamicType.Builder builder) throws PluginException { String interceptorDefineClassName = this.getClass().getName(); String enhanceOriginClassName = enhanceClassName(); diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java index 16b100781..75646e9b4 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/IPlugin.java @@ -1,8 +1,5 @@ package com.ai.cloud.skywalking.plugin; -import net.bytebuddy.dynamic.DynamicType; - public interface IPlugin { - void define(DynamicType.Builder builder) throws PluginException; } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginDefineCategory.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginDefineCategory.java index 2c5d440c7..74a54c66f 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginDefineCategory.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/PluginDefineCategory.java @@ -1,6 +1,6 @@ package com.ai.cloud.skywalking.plugin; -import com.ai.cloud.skywalking.plugin.boot.BootPluginDefine; +import com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine; import java.util.ArrayList; import java.util.HashMap; @@ -12,7 +12,7 @@ public class PluginDefineCategory { private static PluginDefineCategory pluginDefineCategory; private final Map classEnhancePluginDefines = new HashMap(); - private final List bootPluginDefines = new ArrayList(); + private final List IBootPluginDefines = new ArrayList(); private PluginDefineCategory(List plugins) { for (IPlugin plugin : plugins) { @@ -20,8 +20,8 @@ public class PluginDefineCategory { classEnhancePluginDefines.put(((AbstractClassEnhancePluginDefine) plugin).enhanceClassName(), (AbstractClassEnhancePluginDefine) plugin); } - if (plugin instanceof BootPluginDefine) { - bootPluginDefines.add((BootPluginDefine) plugin); + if (plugin instanceof IBootPluginDefine) { + IBootPluginDefines.add((IBootPluginDefine) plugin); } } } @@ -33,8 +33,8 @@ public class PluginDefineCategory { return pluginDefineCategory; } - public List getBootPluginsDefines() { - return pluginDefineCategory.bootPluginDefines; + public List getBootPluginsDefines() { + return pluginDefineCategory.IBootPluginDefines; } public Map getClassEnhancePluginDefines() { diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java index ba39aac69..fb6373a7f 100644 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/TracingBootstrap.java @@ -2,9 +2,11 @@ package com.ai.cloud.skywalking.plugin; import com.ai.cloud.skywalking.logging.LogManager; import com.ai.cloud.skywalking.logging.Logger; +import com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine; import net.bytebuddy.ByteBuddy; import net.bytebuddy.dynamic.ClassFileLocator; import net.bytebuddy.dynamic.DynamicType; +import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; import net.bytebuddy.pool.TypePool; import java.lang.reflect.InvocationTargetException; @@ -38,8 +40,6 @@ public class TracingBootstrap { } for (IPlugin plugin : plugins) { - DynamicType.Builder newClassBuilder = null; - if (plugin instanceof AbstractClassEnhancePluginDefine) { String enhanceClassName = ((AbstractClassEnhancePluginDefine) plugin).enhanceClassName(); TypePool.Resolution resolution = TypePool.Default.ofClassPath().describe(enhanceClassName); @@ -47,10 +47,15 @@ public class TracingBootstrap { logger.error("Failed to resolve the class " + enhanceClassName); continue; } - newClassBuilder = new ByteBuddy().rebase(resolution.resolve(), ClassFileLocator.ForClassLoader.ofClassPath()); + DynamicType.Builder newClassBuilder = new ByteBuddy().rebase(resolution.resolve(), ClassFileLocator.ForClassLoader.ofClassPath()); + newClassBuilder = ((AbstractClassEnhancePluginDefine)plugin).define(newClassBuilder); + newClassBuilder.make().load(ClassLoader.getSystemClassLoader(), ClassLoadingStrategy.Default.INJECTION).getLoaded(); + } + + if(plugin instanceof IBootPluginDefine){ + ((IBootPluginDefine)plugin).boot(); } - plugin.define(newClassBuilder); } diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/BootPluginDefine.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/BootPluginDefine.java deleted file mode 100644 index be92b60fe..000000000 --- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/BootPluginDefine.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.ai.cloud.skywalking.plugin.boot; - -import com.ai.cloud.skywalking.plugin.IPlugin; -import com.ai.cloud.skywalking.plugin.PluginException; -import net.bytebuddy.dynamic.DynamicType; - -public abstract class BootPluginDefine implements IPlugin { - - @Override - public void define(DynamicType.Builder builder) throws PluginException { - this.boot(); - } - - protected abstract void boot() throws BootException; - -} diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java new file mode 100644 index 000000000..574b12f11 --- /dev/null +++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/boot/IBootPluginDefine.java @@ -0,0 +1,9 @@ +package com.ai.cloud.skywalking.plugin.boot; + +import com.ai.cloud.skywalking.plugin.IPlugin; + +public interface IBootPluginDefine extends IPlugin { + + void boot() throws BootException; + +} diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java index d97813a6e..eb53248a5 100644 --- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java +++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/ExclusionMatcherTest.java @@ -5,6 +5,7 @@ import junit.framework.TestCase; import net.bytebuddy.ByteBuddy; import net.bytebuddy.dynamic.ClassFileLocator; import net.bytebuddy.dynamic.DynamicType; +import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; import net.bytebuddy.pool.TypePool; import org.junit.Test; @@ -23,7 +24,8 @@ public class ExclusionMatcherTest extends TestCase { DynamicType.Builder newClassBuilder = new ByteBuddy().rebase(TypePool.Default.ofClassPath().describe(entry.getKey()).resolve(), ClassFileLocator.ForClassLoader.ofClassPath()); - entry.getValue().define(newClassBuilder); + newClassBuilder = entry.getValue().define(newClassBuilder); + newClassBuilder.make().load(ClassLoader.getSystemClassLoader(), ClassLoadingStrategy.Default.INJECTION).getLoaded(); } TestMatcherClass testMatcherClass = (TestMatcherClass) Class.forName("test.ai.cloud.matcher.TestMatcherClass").newInstance(); diff --git a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefineI.java similarity index 89% rename from skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java rename to skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefineI.java index 93e5b6c8c..0d2c83624 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java +++ b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefineI.java @@ -2,20 +2,19 @@ package com.ai.cloud.skywalking.plugin.jdbc; import java.lang.reflect.Constructor; import java.lang.reflect.Field; -import java.sql.Driver; import java.sql.DriverManager; import java.util.concurrent.CopyOnWriteArrayList; import com.ai.cloud.skywalking.logging.LogManager; import com.ai.cloud.skywalking.logging.Logger; import com.ai.cloud.skywalking.plugin.boot.BootException; -import com.ai.cloud.skywalking.plugin.boot.BootPluginDefine; +import com.ai.cloud.skywalking.plugin.boot.IBootPluginDefine; -public class JDBCPluginDefine extends BootPluginDefine { - private static Logger logger = LogManager.getLogger(JDBCPluginDefine.class); +public class JDBCPluginDefineI implements IBootPluginDefine { + private static Logger logger = LogManager.getLogger(JDBCPluginDefineI.class); @Override - protected void boot() throws BootException { + public void boot() throws BootException { try { Class classes = Class.forName("java.sql.DriverInfo"); Object traceDriverInfo = newDriverInfoInstance(classes); diff --git a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/skywalking-plugin.def b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/skywalking-plugin.def index c371f19ab..189081ed9 100644 --- a/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/skywalking-plugin.def +++ b/skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/skywalking-plugin.def @@ -1 +1 @@ -com.ai.cloud.skywalking.plugin.jdbc.JDBCPluginDefine +com.ai.cloud.skywalking.plugin.jdbc.JDBCPluginDefineI diff --git a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/peresistent/PersistenceThread.java b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/peresistent/PersistenceThread.java index 163eb4af0..cfc6ea5bb 100644 --- a/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/peresistent/PersistenceThread.java +++ b/skywalking-server/src/main/java/com/ai/cloud/skywalking/reciever/peresistent/PersistenceThread.java @@ -43,7 +43,6 @@ public class PersistenceThread extends Thread { BufferFileReader bufferReader = new BufferFileReader(bufferFile, offset); while (bufferReader.hasNext()) { List serializableDataList = bufferReader.next(); - System.out.println(serializableDataList.size()); //handleSpans(spans); }