修正IPlugin接口以及IBootPluginDefine,及其相关实现。增加代码的一致性。
This commit is contained in:
parent
9f317bf59e
commit
dd27fad3e2
|
|
@ -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<BootPluginDefine> bootPluginDefines) throws PluginException {
|
||||
for (BootPluginDefine bootPluginDefine : bootPluginDefines) {
|
||||
bootPluginDefine.define(null);
|
||||
public static void startBootPluginDefines(List<IBootPluginDefine> IBootPluginDefines) throws PluginException {
|
||||
for (IBootPluginDefine bootPluginDefine : IBootPluginDefines) {
|
||||
bootPluginDefine.boot();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<String, AbstractClassEnhancePluginDefine> classEnhancePluginDefines = new HashMap<String, AbstractClassEnhancePluginDefine>();
|
||||
private final List<BootPluginDefine> bootPluginDefines = new ArrayList<BootPluginDefine>();
|
||||
private final List<IBootPluginDefine> IBootPluginDefines = new ArrayList<IBootPluginDefine>();
|
||||
|
||||
private PluginDefineCategory(List<IPlugin> 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<BootPluginDefine> getBootPluginsDefines() {
|
||||
return pluginDefineCategory.bootPluginDefines;
|
||||
public List<IBootPluginDefine> getBootPluginsDefines() {
|
||||
return pluginDefineCategory.IBootPluginDefines;
|
||||
}
|
||||
|
||||
public Map<String, AbstractClassEnhancePluginDefine> getClassEnhancePluginDefines() {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
@ -1 +1 @@
|
|||
com.ai.cloud.skywalking.plugin.jdbc.JDBCPluginDefine
|
||||
com.ai.cloud.skywalking.plugin.jdbc.JDBCPluginDefineI
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ public class PersistenceThread extends Thread {
|
|||
BufferFileReader bufferReader = new BufferFileReader(bufferFile, offset);
|
||||
while (bufferReader.hasNext()) {
|
||||
List<AbstractDataSerializable> serializableDataList = bufferReader.next();
|
||||
System.out.println(serializableDataList.size());
|
||||
//handleSpans(spans);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue