diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index b75ff97cd..000000000
--- a/.gitignore
+++ /dev/null
@@ -1,53 +0,0 @@
-*.class
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-.idea/
-samples/skywalking-auth/skywalking-auth.iml
-samples/skywalking-auth/target/
-skywalking-alarm/skywalking-alarm.iml
-skywalking-alarm/target/
-skywalking-analysis/skywalking-analysis.iml
-skywalking-analysis/target/
-skywalking-collector/skywalking-agent/dependency-reduced-pom.xml
-skywalking-collector/skywalking-agent/skywalking-agent.iml
-skywalking-collector/skywalking-agent/target/
-skywalking-collector/skywalking-api/skywalking-api.iml
-skywalking-collector/skywalking-collector.iml
-skywalking-collector/skywalking-log/example/example.iml
-skywalking-collector/skywalking-log/log4j-1.x-plugin/skywalking-log4j-1.x-plugin.iml
-skywalking-collector/skywalking-log/log4j-2.x-plugin/skywalking-log4j-2.x-plugin.iml
-skywalking-collector/skywalking-log/skywalking-log.iml
-skywalking-collector/skywalking-protocol/skywalking-protocol.iml
-skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/skywalking-dubbo-plugin.iml
-skywalking-collector/skywalking-sdk-plugin/dubbo-plugin/target/
-skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/skywalking-httpClient-4.x-plugin.iml
-skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/target/
-skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/skywalking-jdbc-plugin.iml
-skywalking-sdk-plugin/jdbc-plugin/target/
-skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/skywalking-jedis-2.x-plugin.iml
-skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/target/
-skywalking-collector/skywalking-sdk-plugin/spring-plugin/skywalking-spring-plugin.iml
-skywalking-collector/skywalking-sdk-plugin/spring-plugin/target/
-skywalking-collector/skywalking-sdk-plugin/web-plugin/skywalking-web-plugin.iml
-skywalking-collector/skywalking-sdk-plugin/web-plugin/target/
-skywalking-server/target/
-skywalking-webui/skywalking-webui.iml
-skywalking.iml
-test/skywalking-agent-test/.idea/
-test/skywalking-agent-test/dubbo-test/
-test/skywalking-agent-test/jdbc-test/jdbc-test.iml
-test/skywalking-agent-test/redis-test/redis-test.iml
-test/skywalking-test-api/skywalking-test-api.iml
-test/skywalking-test-api/target/
-skywalking-collector/skywalking-sdk-plugin/jdbc-plugin/target/
-.gitignore
-skywalking-collector/skywalking-log/logback-plugin/logback-plugin.iml
diff --git a/skywalking-collector/skywalking-agent/pom.xml b/skywalking-collector/skywalking-agent/pom.xml
index d53b263fb..835007bbc 100644
--- a/skywalking-collector/skywalking-agent/pom.xml
+++ b/skywalking-collector/skywalking-agent/pom.xml
@@ -23,6 +23,10 @@
com.ai.cloud.skywalking.api.dependencies.io.netty
com.google.protobuf
com.ai.cloud.skywalking.api.dependencies.google.protobuf
+ javassist
+ com.ai.cloud.skywalking.api.dependencies.javassist
+ com.google.gson
+ com.ai.cloud.skywalking.api.dependencies.com.google.gson
@@ -46,6 +50,11 @@
skywalking-dubbo-plugin
1.0-Final
+
+ com.ai.cloud
+ tomcat-8.x-plugin
+ 1.0-Final
+
@@ -88,6 +97,14 @@
${shade.com.google.protobuf.source}
${shade.com.google.protobuf.target}
+
+ ${shade.javassist.source}
+ ${shade.javassist.target}
+
+
+ ${shade.com.google.gson.source}
+ ${shade.com.google.gson.target}
+
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java
index 53e9db343..5209082e7 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/BaseInvokeMonitor.java
@@ -32,12 +32,10 @@ public abstract class BaseInvokeMonitor {
}
- if (!spanData.isValidate()) {
- // 根据SpanData生成RequestSpan,并保存
- ContextBuffer.save(RequestSpan.RequestSpanBuilder.
- newBuilder(spanData).callType(id.getCallType()).viewPoint(id.getViewPoint())
- .spanTypeDesc(id.getSpanTypeDesc()).build());
- }
+ // 根据SpanData生成RequestSpan,并保存
+ ContextBuffer.save(RequestSpan.RequestSpanBuilder.
+ newBuilder(spanData).callType(id.getCallType()).viewPoint(id.getViewPoint())
+ .spanTypeDesc(id.getSpanTypeDesc()).build());
// 将新创建的Context存放到ThreadLocal栈中。
CurrentThreadSpanStack.push(spanData);
@@ -56,10 +54,6 @@ public abstract class BaseInvokeMonitor {
// 弹出上下文的栈顶中的元素
Span spanData = CurrentThreadSpanStack.pop();
- if (spanData == null || spanData.isValidate()) {
- return;
- }
-
spanData.setInvokeResult(invokeResult);
if (Config.BuriedPoint.PRINTF) {
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java
index 1d6c48956..60109ab65 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/invoke/monitor/RPCServerInvokeMonitor.java
@@ -25,8 +25,6 @@ public class RPCServerInvokeMonitor extends BaseInvokeMonitor {
// 设置是否为接收端
spanData.setSpanType(SpanType.RPC_SERVER);
- invalidateAllSpanIfIsNotFirstSpan(spanData);
-
super.beforeInvoke(spanData, id);
} catch (Throwable t) {
logger.error(t.getMessage(), t);
@@ -42,9 +40,4 @@ public class RPCServerInvokeMonitor extends BaseInvokeMonitor {
super.occurException(th);
}
- private void invalidateAllSpanIfIsNotFirstSpan(Span spanData) {
- if (!CurrentThreadSpanStack.peek().getTraceId().equals(spanData.getTraceId())) {
- CurrentThreadSpanStack.invalidatePresentSpans();
- }
- }
}
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/assist/SimpleObjectFirstInvokeInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/assist/SimpleObjectFirstInvokeInterceptor.java
index 3cf284118..58bd5eda1 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/assist/SimpleObjectFirstInvokeInterceptor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/assist/SimpleObjectFirstInvokeInterceptor.java
@@ -4,7 +4,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext;
import com.ai.cloud.skywalking.plugin.interceptor.InterceptorException;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
/**
* 用于首次拦截方法调用,避免方法内部的方法调用被多次拦截。
@@ -12,7 +12,7 @@ import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundIn
* @author wusheng
*
*/
-public abstract class SimpleObjectFirstInvokeInterceptor implements IntanceMethodsAroundInterceptor {
+public abstract class SimpleObjectFirstInvokeInterceptor implements InstanceMethodsAroundInterceptor {
protected String invokeCounterKey = "__$invokeCounterKey";
protected Object invokeCounterInstLock = new Object();
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java
index bd6ec2434..c85d925bc 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassConstructorInterceptor.java
@@ -13,9 +13,9 @@ public class ClassConstructorInterceptor {
private static Logger logger = LogManager
.getLogger(ClassConstructorInterceptor.class);
- private IntanceMethodsAroundInterceptor interceptor;
+ private InstanceMethodsAroundInterceptor interceptor;
- public ClassConstructorInterceptor(IntanceMethodsAroundInterceptor interceptor) {
+ public ClassConstructorInterceptor(InstanceMethodsAroundInterceptor interceptor) {
this.interceptor = interceptor;
}
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java
index 1a50361a4..28d55a313 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassEnhancePluginDefine.java
@@ -52,9 +52,9 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi
* 2.intercept constructor by default, and intercept method which it's
* required by interceptorDefineClass.
*/
- IntanceMethodsAroundInterceptor interceptor = getInstanceMethodsInterceptor();
+ InstanceMethodsAroundInterceptor interceptor = getInstanceMethodsInterceptor();
if (interceptor == null) {
- throw new EnhanceException("no IntanceMethodsAroundInterceptor instance. ");
+ throw new EnhanceException("no InstanceMethodsAroundInterceptor instance. ");
}
newClassBuilder = newClassBuilder
@@ -116,7 +116,7 @@ public abstract class ClassEnhancePluginDefine extends AbstractClassEnhancePlugi
*
* @return
*/
- protected abstract IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor();
+ protected abstract InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor();
private DynamicType.Builder> enhanceClass(String enhanceOriginClassName,
DynamicType.Builder> newClassBuilder) throws PluginException {
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java
index 1403ac56f..04f4d05fd 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassInstanceMethodsInterceptor.java
@@ -17,9 +17,9 @@ public class ClassInstanceMethodsInterceptor {
private static Logger logger = LogManager
.getLogger(ClassInstanceMethodsInterceptor.class);
- private IntanceMethodsAroundInterceptor interceptor;
+ private InstanceMethodsAroundInterceptor interceptor;
- public ClassInstanceMethodsInterceptor(IntanceMethodsAroundInterceptor interceptor) {
+ public ClassInstanceMethodsInterceptor(InstanceMethodsAroundInterceptor interceptor) {
this.interceptor = interceptor;
}
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsEnhancePluginDefine.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsEnhancePluginDefine.java
index c0860890d..3629ab318 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsEnhancePluginDefine.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/ClassStaticMethodsEnhancePluginDefine.java
@@ -17,7 +17,7 @@ public abstract class ClassStaticMethodsEnhancePluginDefine extends
}
@Override
- protected IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ protected InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
return null;
}
}
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/IntanceMethodsAroundInterceptor.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java
similarity index 92%
rename from skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/IntanceMethodsAroundInterceptor.java
rename to skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java
index c1fd08eaa..1dc45fe7c 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/IntanceMethodsAroundInterceptor.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/plugin/interceptor/enhance/InstanceMethodsAroundInterceptor.java
@@ -2,7 +2,7 @@ package com.ai.cloud.skywalking.plugin.interceptor.enhance;
import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext;
-public interface IntanceMethodsAroundInterceptor {
+public interface InstanceMethodsAroundInterceptor {
public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext);
public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result);
diff --git a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/protocol/util/ContextGenerator.java b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/protocol/util/ContextGenerator.java
index 719e98c75..45267faca 100644
--- a/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/protocol/util/ContextGenerator.java
+++ b/skywalking-collector/skywalking-api/src/main/java/com/ai/cloud/skywalking/protocol/util/ContextGenerator.java
@@ -59,14 +59,6 @@ public final class ContextGenerator {
// LevelId是由SpanNode类的nextSubSpanLevelId字段进行初始化的.
// 所以在这里不需要初始化
span = new Span(parentSpan.getTraceId(), Config.SkyWalking.APPLICATION_CODE, Config.SkyWalking.USER_ID);
-
- // check parent span is RPC span
- // if true, current span is invalidate and current span also belong to RPC span
- if (parentSpan.isRPCClientSpan()) {
- span.setSpanType(SpanType.RPC_CLIENT);
- span.setValidate(false);
- }
-
if (!StringUtil.isEmpty(parentSpan.getParentLevel())) {
span.setParentLevel(parentSpan.getParentLevel() + "." + parentSpan.getLevelId());
} else {
diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java
index e3b565442..24523e994 100644
--- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java
+++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestAroundInterceptor.java
@@ -3,13 +3,13 @@ package test.ai.cloud.matcher;
import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ConstructorInvokeContext;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodInvokeContext;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.MethodInterceptResult;
/**
* Created by xin on 16-6-8.
*/
-public class TestAroundInterceptor implements IntanceMethodsAroundInterceptor {
+public class TestAroundInterceptor implements InstanceMethodsAroundInterceptor {
@Override
public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) {
diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java
index b092b7ce7..9c424f7c4 100644
--- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java
+++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/matcher/TestMatcherDefine.java
@@ -2,7 +2,7 @@ package test.ai.cloud.matcher;
import com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.matcher.PrivateMethodMatcher;
/**
@@ -28,7 +28,7 @@ public class TestMatcherDefine extends ClassInstanceMethodsEnhancePluginDefine {
}
@Override
- protected IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ protected InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
return new TestAroundInterceptor();
}
}
diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java
index 6c9cb5e4b..7e146e9da 100644
--- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java
+++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestAroundInterceptor.java
@@ -3,10 +3,10 @@ package test.ai.cloud.plugin;
import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ConstructorInvokeContext;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodInvokeContext;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.MethodInterceptResult;
-public class TestAroundInterceptor implements IntanceMethodsAroundInterceptor {
+public class TestAroundInterceptor implements InstanceMethodsAroundInterceptor {
@Override
public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) {
diff --git a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java
index c18b13e8b..ae0b805c4 100644
--- a/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java
+++ b/skywalking-collector/skywalking-api/src/test/java/test/ai/cloud/plugin/TestInterceptorDefine.java
@@ -2,7 +2,7 @@ package test.ai.cloud.plugin;
import com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassEnhancePluginDefine;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.StaticMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher;
@@ -19,7 +19,7 @@ public class TestInterceptorDefine extends ClassEnhancePluginDefine {
}
@Override
- public IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ public InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
return new TestAroundInterceptor();
}
diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java
index 6c33426a9..c5ad51438 100644
--- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java
+++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/HttpClientExecuteInterceptor.java
@@ -8,10 +8,10 @@ import com.ai.cloud.skywalking.model.Identification;
import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ConstructorInvokeContext;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodInvokeContext;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.MethodInterceptResult;
-public class HttpClientExecuteInterceptor implements IntanceMethodsAroundInterceptor {
+public class HttpClientExecuteInterceptor implements InstanceMethodsAroundInterceptor {
/**
* default headname of sky walking context
*/
diff --git a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/define/HttpClientPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/define/HttpClientPluginDefine.java
index ed396d9e6..989516e66 100644
--- a/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/define/HttpClientPluginDefine.java
+++ b/skywalking-collector/skywalking-sdk-plugin/httpClient-4.x-plugin/src/main/java/com/ai/cloud/skywalking/httpClient/v4/plugin/define/HttpClientPluginDefine.java
@@ -3,12 +3,12 @@ package com.ai.cloud.skywalking.httpClient.v4.plugin.define;
import com.ai.cloud.skywalking.httpClient.v4.plugin.HttpClientExecuteInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
public abstract class HttpClientPluginDefine extends ClassInstanceMethodsEnhancePluginDefine {
@Override
- public IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ public InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
return new HttpClientExecuteInterceptor();
}
diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/pom.xml b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/pom.xml
index e73955bde..3d2605d74 100644
--- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/pom.xml
+++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/pom.xml
@@ -20,12 +20,6 @@
-
- com.ai.cloud
- skywalking-api
- 1.0-Final
-
-
redis.clients
jedis
diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
index 63fdd97c3..6cbde6252 100644
--- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
+++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisClusterPluginDefine.java
@@ -3,7 +3,7 @@ package com.ai.cloud.skywalking.jedis.v2.plugin.define;
import com.ai.cloud.skywalking.jedis.v2.plugin.JedisClusterInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.matcher.AnyMethodsMatcher;
public class JedisClusterPluginDefine extends ClassInstanceMethodsEnhancePluginDefine {
@@ -21,7 +21,7 @@ public class JedisClusterPluginDefine extends ClassInstanceMethodsEnhancePluginD
}
@Override
- public IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ public InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
return new JedisClusterInterceptor();
}
}
diff --git a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java
index 8ce663b75..a645fa08e 100644
--- a/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java
+++ b/skywalking-collector/skywalking-sdk-plugin/jedis-2.x-plugin/src/main/java/com/ai/cloud/skywalking/jedis/v2/plugin/define/JedisPluginDefine.java
@@ -3,7 +3,7 @@ package com.ai.cloud.skywalking.jedis.v2.plugin.define;
import com.ai.cloud.skywalking.jedis.v2.plugin.JedisInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher;
import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
-import com.ai.cloud.skywalking.plugin.interceptor.enhance.IntanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
import com.ai.cloud.skywalking.plugin.interceptor.matcher.MethodsExclusiveMatcher;
import com.ai.cloud.skywalking.plugin.interceptor.matcher.PrivateMethodMatcher;
import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher;
@@ -32,7 +32,7 @@ public class JedisPluginDefine extends ClassInstanceMethodsEnhancePluginDefine {
}
@Override
- public IntanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ public InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
return new JedisInterceptor();
}
diff --git a/skywalking-collector/skywalking-sdk-plugin/pom.xml b/skywalking-collector/skywalking-sdk-plugin/pom.xml
index c99ea31cc..49dfc2c4b 100644
--- a/skywalking-collector/skywalking-sdk-plugin/pom.xml
+++ b/skywalking-collector/skywalking-sdk-plugin/pom.xml
@@ -17,6 +17,7 @@
web-plugin
httpClient-4.x-plugin
jedis-2.x-plugin
+ tomcat-7.x-8.x-plugin
pom
@@ -35,6 +36,11 @@
1.0-Final
test
+
+ com.ai.cloud
+ skywalking-api
+ 1.0-Final
+
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml
new file mode 100644
index 000000000..3fd222ca0
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/pom.xml
@@ -0,0 +1,53 @@
+
+
+ skywalking-sdk-plugin
+ com.ai.cloud
+ 1.0-Final
+
+ 4.0.0
+
+ tomcat-7.x-8.x-plugin
+ jar
+
+ tomcat-7.x-8.x-plugin
+ http://maven.apache.org
+
+
+ UTF-8
+ 8.0.36
+
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-core
+ ${tomcat.version}
+ provided
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-logging-juli
+ ${tomcat.version}
+ test
+
+
+ org.apache.tomcat.embed
+ tomcat-embed-jasper
+ ${tomcat.version}
+ test
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.5.2
+ test
+
+
+
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java
new file mode 100644
index 000000000..e1f709ae4
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginInterceptor.java
@@ -0,0 +1,72 @@
+package com.ai.cloud.skywalking.plugin.tomcat78x;
+
+import com.ai.cloud.skywalking.api.Tracing;
+import com.ai.cloud.skywalking.invoke.monitor.RPCServerInvokeMonitor;
+import com.ai.cloud.skywalking.model.ContextData;
+import com.ai.cloud.skywalking.model.Identification;
+import com.ai.cloud.skywalking.plugin.interceptor.EnhancedClassInstanceContext;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.ConstructorInvokeContext;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodInvokeContext;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.MethodInterceptResult;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class TomcatPluginInterceptor implements InstanceMethodsAroundInterceptor {
+ private final String secondKey = "ContextData";
+ private String tracingName = DEFAULT_TRACE_NAME;
+ private static final String DEFAULT_TRACE_NAME = "SkyWalking-TRACING-NAME";
+ private static final String TRACE_ID_HEADER_NAME = "SW-TraceId";
+
+ @Override
+ public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) {
+ //DO Nothing
+ }
+
+ @Override
+ public void beforeMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, MethodInterceptResult result) {
+ Object[] args = interceptorContext.allArguments();
+ HttpServletRequest requests = (HttpServletRequest) args[0];
+ String tracingHeaderValue = requests.getHeader(tracingName);
+ ContextData contextData = null;
+ if (tracingHeaderValue != null) {
+ String contextDataStr = null;
+ int index = tracingHeaderValue.indexOf("=");
+ if (index > 0) {
+ String key = tracingHeaderValue.substring(0, index);
+ if (secondKey.equals(key)) {
+ contextDataStr = tracingHeaderValue.substring(index + 1);
+ }
+ }
+
+ if (contextDataStr != null && contextDataStr.length() > 0) {
+ contextData = new ContextData(contextDataStr);
+ }
+ }
+ RPCServerInvokeMonitor rpcServerInvokeMonitor = new RPCServerInvokeMonitor();
+ rpcServerInvokeMonitor.beforeInvoke(contextData, generateIdentification(requests));
+ }
+
+
+ private Identification generateIdentification(HttpServletRequest request) {
+ return Identification.newBuilder()
+ .viewPoint(request.getRequestURL().toString())
+ .spanType(WebBuriedPointType.instance())
+ .build();
+ }
+
+
+ @Override
+ public Object afterMethod(EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) {
+ Object[] args = interceptorContext.allArguments();
+ HttpServletResponse httpServletResponse = (HttpServletResponse) args[1];
+ httpServletResponse.addHeader(TRACE_ID_HEADER_NAME, Tracing.getTraceId());
+ return ret;
+ }
+
+ @Override
+ public void handleMethodException(Throwable t, EnhancedClassInstanceContext context, InstanceMethodInvokeContext interceptorContext, Object ret) {
+ // DO Nothing
+ }
+}
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/WebBuriedPointType.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/WebBuriedPointType.java
new file mode 100644
index 000000000..0e1957257
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/WebBuriedPointType.java
@@ -0,0 +1,31 @@
+package com.ai.cloud.skywalking.plugin.tomcat78x;
+
+import com.ai.cloud.skywalking.api.IBuriedPointType;
+import com.ai.cloud.skywalking.protocol.common.CallType;
+
+public class WebBuriedPointType implements IBuriedPointType {
+
+ private static WebBuriedPointType webBuriedPointType;
+
+ public static IBuriedPointType instance() {
+ if (webBuriedPointType == null) {
+ webBuriedPointType = new WebBuriedPointType();
+ }
+
+ return webBuriedPointType;
+ }
+
+ @Override
+ public String getTypeName() {
+ return "W";
+ }
+
+ @Override
+ public CallType getCallType() {
+ return CallType.SYNC;
+ }
+
+ private WebBuriedPointType() {
+ // Non
+ }
+}
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java
new file mode 100644
index 000000000..5e3de1440
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/java/com/ai/cloud/skywalking/plugin/tomcat78x/define/TomcatPluginDefine.java
@@ -0,0 +1,27 @@
+package com.ai.cloud.skywalking.plugin.tomcat78x.define;
+
+import com.ai.cloud.skywalking.plugin.interceptor.MethodMatcher;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.ClassInstanceMethodsEnhancePluginDefine;
+import com.ai.cloud.skywalking.plugin.interceptor.enhance.InstanceMethodsAroundInterceptor;
+import com.ai.cloud.skywalking.plugin.interceptor.matcher.SimpleMethodMatcher;
+import com.ai.cloud.skywalking.plugin.tomcat78x.TomcatPluginInterceptor;
+import org.apache.catalina.connector.Request;
+import org.apache.catalina.connector.Response;
+
+public class TomcatPluginDefine extends ClassInstanceMethodsEnhancePluginDefine {
+ @Override
+ protected MethodMatcher[] getInstanceMethodsMatchers() {
+
+ return new MethodMatcher[]{new SimpleMethodMatcher("invoke", Request.class, Response.class)};
+ }
+
+ @Override
+ protected InstanceMethodsAroundInterceptor getInstanceMethodsInterceptor() {
+ return new TomcatPluginInterceptor();
+ }
+
+ @Override
+ protected String enhanceClassName() {
+ return "org.apache.catalina.core.StandardEngineValve";
+ }
+}
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/resources/skywalking-plugin.def b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/resources/skywalking-plugin.def
new file mode 100644
index 000000000..0e95388d3
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/main/resources/skywalking-plugin.def
@@ -0,0 +1 @@
+com.ai.cloud.skywalking.plugin.tomcat78x.define.TomcatPluginDefine
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/EmbedTomcat.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/EmbedTomcat.java
new file mode 100644
index 000000000..7949ee362
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/EmbedTomcat.java
@@ -0,0 +1,39 @@
+package test.com.ai.cloud.skywalking.plugin.tomcat78x;
+
+import org.apache.catalina.LifecycleException;
+import org.apache.catalina.WebResourceRoot;
+import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.startup.Tomcat;
+import org.apache.catalina.webresources.DirResourceSet;
+import org.apache.catalina.webresources.StandardRoot;
+import org.junit.Test;
+
+import javax.servlet.ServletException;
+import java.io.File;
+
+public class EmbedTomcat {
+
+ @Test
+ public void testGetResourcePath(){
+ System.out.println(EmbedTomcat.class.getResource("/").getPath());
+ }
+
+ @Test
+ public void testStartTomcat() throws ServletException, LifecycleException {
+ start();
+ }
+
+ public static void start() throws ServletException, LifecycleException {
+ String webappDirLocation = EmbedTomcat.class.getResource("/").getPath() + "webapp/";
+ Tomcat tomcat = new Tomcat();
+ tomcat.setPort(8080);
+
+ StandardContext standardContext = (StandardContext) tomcat.addWebapp("/",new File(webappDirLocation).getAbsolutePath());
+ File additionWebInfClasses = new File(EmbedTomcat.class.getResource("/").getPath());
+ WebResourceRoot resourceRoot = new StandardRoot(standardContext);
+ resourceRoot.addPreResources(new DirResourceSet(resourceRoot,"/WEB-INF/classes", additionWebInfClasses.getAbsolutePath(), "/"));
+ standardContext.setResources(resourceRoot);
+
+ tomcat.start();
+ }
+}
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginTest.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginTest.java
new file mode 100644
index 000000000..ecc280db4
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/TomcatPluginTest.java
@@ -0,0 +1,62 @@
+package test.com.ai.cloud.skywalking.plugin.tomcat78x;
+
+import com.ai.cloud.skywalking.plugin.TracingBootstrap;
+import com.ai.skywalking.testframework.api.RequestSpanAssert;
+import org.apache.catalina.LifecycleException;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.ClientProtocolException;
+import org.apache.http.client.ResponseHandler;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.junit.Test;
+
+import javax.servlet.ServletException;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+
+public class TomcatPluginTest {
+
+ @Test
+ public void test() throws InvocationTargetException, NoSuchMethodException, ClassNotFoundException, IllegalAccessException {
+ TracingBootstrap
+ .main(new String[]{TomcatPluginTest.class.getName()});
+ }
+
+ public static void main(String[] args) throws ServletException, LifecycleException, IOException, InterruptedException {
+ // start tomcat
+ EmbedTomcat.start();
+ // curl httpclient
+ visitURL("http://127.0.0.1:8080/hello");
+ // assert client
+ RequestSpanAssert.assertEquals(new String[][]{
+ {"0", "http://127.0.0.1:8080/hello" , ""}
+ });
+ }
+
+ public static void visitURL(String url) throws IOException {
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+ try {
+ HttpGet httpget = new HttpGet(url);
+ ResponseHandler responseHandler = new ResponseHandler() {
+ @Override
+ public String handleResponse(
+ final HttpResponse response) throws ClientProtocolException, IOException {
+ int status = response.getStatusLine().getStatusCode();
+ if (status >= 200 && status < 300) {
+ HttpEntity entity = response.getEntity();
+ return entity != null ? EntityUtils.toString(entity) : null;
+ } else {
+ throw new ClientProtocolException("Unexpected response status: " + status);
+ }
+ }
+
+ };
+ String responseBody = httpclient.execute(httpget, responseHandler);
+ } finally {
+ httpclient.close();
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/servlet/HelloServlet.java b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/servlet/HelloServlet.java
new file mode 100644
index 000000000..8cc0a1d00
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/test/com/ai/cloud/skywalking/plugin/tomcat78x/servlet/HelloServlet.java
@@ -0,0 +1,23 @@
+package test.com.ai.cloud.skywalking.plugin.tomcat78x.servlet;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * Created by xin on 16/7/22.
+ */
+@WebServlet(
+ name="myServlet",
+ urlPatterns = {"/hello"}
+)
+public class HelloServlet extends HttpServlet{
+
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ System.out.println("Hello World");
+ }
+}
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/resources/sky-walking.auth b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/resources/sky-walking.auth
new file mode 100644
index 000000000..ff0b6dcf1
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/resources/sky-walking.auth
@@ -0,0 +1,45 @@
+#skyWalking用户ID
+skywalking.user_id=123
+#skyWalking应用编码
+skywalking.application_code=test
+#skywalking auth的环境变量名字
+skywalking.auth_system_env_name=SKYWALKING_RUN
+#skywalking数据编码
+skywalking.charset=UTF-8
+skywalking.auth_override=true
+
+#是否打印数据
+buriedpoint.printf=true
+#埋点异常的最大长度
+buriedpoint.max_exception_stack_length=4000
+#业务字段的最大长度
+buriedpoint.businesskey_max_length=300
+#过滤异常
+buriedpoint.exclusive_exceptions=java.lang.RuntimeException
+
+#最大发送者的连接数阀比例
+sender.connect_percent=100
+#发送服务端配置
+sender.servers_addr=127.0.0.1:34000
+#最大发送的副本数量
+sender.max_copy_num=2
+#发送的最大长度
+sender.max_send_length=20000
+#当没有Sender时,尝试获取sender的等待周期
+sender.retry_get_sender_wait_interval=2000
+
+#最大消费线程数
+consumer.max_consumer=0
+#消费者最大等待时间
+consumer.max_wait_time=5
+#发送失败等待时间
+consumer.consumer_fail_retry_wait_interval=50
+
+#每个Buffer的最大个数
+buffer.buffer_max_size=18000
+#Buffer池的最大长度
+buffer.pool_size=5
+
+#发送检查线程检查周期
+senderchecker.check_polling_time=200
+
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/resources/webapp/HelloWorld.jsp b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/resources/webapp/HelloWorld.jsp
new file mode 100644
index 000000000..7874157ad
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/resources/webapp/HelloWorld.jsp
@@ -0,0 +1,5 @@
+
+
+Hello World
+
+
\ No newline at end of file
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/classes/skywalking-plugin.def b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/classes/skywalking-plugin.def
new file mode 100644
index 000000000..b406779af
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/classes/skywalking-plugin.def
@@ -0,0 +1 @@
+com.ai.cloud.skywalking.plugin.tomcat8.define.Tomcat8PluginDefine
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/test-classes/sky-walking.auth b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/test-classes/sky-walking.auth
new file mode 100644
index 000000000..ff0b6dcf1
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/test-classes/sky-walking.auth
@@ -0,0 +1,45 @@
+#skyWalking用户ID
+skywalking.user_id=123
+#skyWalking应用编码
+skywalking.application_code=test
+#skywalking auth的环境变量名字
+skywalking.auth_system_env_name=SKYWALKING_RUN
+#skywalking数据编码
+skywalking.charset=UTF-8
+skywalking.auth_override=true
+
+#是否打印数据
+buriedpoint.printf=true
+#埋点异常的最大长度
+buriedpoint.max_exception_stack_length=4000
+#业务字段的最大长度
+buriedpoint.businesskey_max_length=300
+#过滤异常
+buriedpoint.exclusive_exceptions=java.lang.RuntimeException
+
+#最大发送者的连接数阀比例
+sender.connect_percent=100
+#发送服务端配置
+sender.servers_addr=127.0.0.1:34000
+#最大发送的副本数量
+sender.max_copy_num=2
+#发送的最大长度
+sender.max_send_length=20000
+#当没有Sender时,尝试获取sender的等待周期
+sender.retry_get_sender_wait_interval=2000
+
+#最大消费线程数
+consumer.max_consumer=0
+#消费者最大等待时间
+consumer.max_wait_time=5
+#发送失败等待时间
+consumer.consumer_fail_retry_wait_interval=50
+
+#每个Buffer的最大个数
+buffer.buffer_max_size=18000
+#Buffer池的最大长度
+buffer.pool_size=5
+
+#发送检查线程检查周期
+senderchecker.check_polling_time=200
+
diff --git a/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/test-classes/webapp/HelloWorld.jsp b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/test-classes/webapp/HelloWorld.jsp
new file mode 100644
index 000000000..7874157ad
--- /dev/null
+++ b/skywalking-collector/skywalking-sdk-plugin/tomcat-7.x-8.x-plugin/target/test-classes/webapp/HelloWorld.jsp
@@ -0,0 +1,5 @@
+
+
+Hello World
+
+
\ No newline at end of file
diff --git a/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/config/Config.java b/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/config/Config.java
index b65b583f9..5bcb71690 100644
--- a/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/config/Config.java
+++ b/test/skywalking-test-api/src/main/java/com/ai/skywalking/testframework/api/config/Config.java
@@ -2,7 +2,7 @@ package com.ai.skywalking.testframework.api.config;
public class Config {
- public static String BUFFER_POOL_CLASS_NAME = "com.ai.cloud.skywalking.buffer.ContextBuffer$BufferPool";
+ public static String BUFFER_POOL_CLASS_NAME = "com.ai.cloud.skywalking.buffer.BufferPool";
public static String BUFFER_GROUP_FIELD_NAME = "bufferGroups";