diff --git a/skywalking-application-toolkit/pom.xml b/skywalking-application-toolkit/pom.xml
index 19be7c443a52c1b8761936a12d45af6f67485613..2fb8b4a9dd9625a9e9a6b7aad8928ce71023b3f7 100644
--- a/skywalking-application-toolkit/pom.xml
+++ b/skywalking-application-toolkit/pom.xml
@@ -18,5 +18,6 @@
skywalking-toolkit-log4j-2.x
skywalking-toolkit-logback-1.x
skywalking-toolkit-trace-context
+ skywalking-toolkit-opentracing
diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/pom.xml b/skywalking-application-toolkit/skywalking-toolkit-opentracing/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..be3ccede11bbf85e18edbf1b4a9c4a45cf4ee9c0
--- /dev/null
+++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/pom.xml
@@ -0,0 +1,26 @@
+
+
+
+ skywalking-application-toolkit
+ com.a.eye
+ 2.1-2017
+
+ 4.0.0
+
+ skywalking-toolkit-opentracing
+
+
+
+ io.opentracing
+ opentracing-api
+ 0.20.4
+
+
+ io.opentracing
+ opentracing-noop
+ 0.20.4
+
+
+
diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java
new file mode 100644
index 0000000000000000000000000000000000000000..7d5c72639f5aa88b1b0bc84a5d32ee30249b0628
--- /dev/null
+++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpan.java
@@ -0,0 +1,104 @@
+package com.a.eye.skywalking.toolkit.opentracing;
+
+import io.opentracing.Span;
+import io.opentracing.SpanContext;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by wusheng on 2016/12/20.
+ */
+public class SkyWalkingSpan implements Span, SpanContext {
+ private final Map baggageItems;
+
+ SkyWalkingSpan(){
+ baggageItems = new HashMap();
+ }
+
+ @Override
+ public SpanContext context() {
+ return this;
+ }
+
+ @Override
+ public void finish() {
+
+ }
+
+ @Override
+ public void finish(long finishMicros) {
+
+ }
+
+ @Override
+ public void close() {
+
+ }
+
+ @Override
+ public Span setTag(String key, String value) {
+ return this;
+ }
+
+ @Override
+ public Span setTag(String key, boolean value) {
+ return this;
+ }
+
+ @Override
+ public Span setTag(String key, Number value) {
+ return this;
+ }
+
+ @Override
+ public Span log(Map fields) {
+ return this;
+ }
+
+ @Override
+ public Span log(long timestampMicroseconds, Map fields) {
+ return this;
+ }
+
+ @Override
+ public Span log(String event) {
+ return this;
+ }
+
+ @Override
+ public Span log(long timestampMicroseconds, String event) {
+ return this;
+ }
+
+ @Override
+ public Span setBaggageItem(String key, String value) {
+ baggageItems.put(key, value);
+ return this;
+ }
+
+ @Override
+ public String getBaggageItem(String key) {
+ return baggageItems.get(key);
+ }
+
+ @Override
+ public Span setOperationName(String operationName) {
+ return this;
+ }
+
+ @Override
+ public Span log(String eventName, Object payload) {
+ return this;
+ }
+
+ @Override
+ public Span log(long timestampMicroseconds, String eventName, Object payload) {
+ return this;
+ }
+
+ @Override
+ public Iterable> baggageItems() {
+ return baggageItems.entrySet();
+ }
+}
diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..f69b1940120b72761a1e3b294e7f293714d2455e
--- /dev/null
+++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingSpanBuilder.java
@@ -0,0 +1,72 @@
+package com.a.eye.skywalking.toolkit.opentracing;
+
+import io.opentracing.References;
+import io.opentracing.Span;
+import io.opentracing.SpanContext;
+import io.opentracing.Tracer;
+
+import java.util.Map;
+
+/**
+ * All source code in SkyWalkingSpanBuilder acts like an NoopSpanBuilder.
+ * Actually, it is NOT.
+ * The whole logic will be added after toolkit-activation.
+ *
+ * Created by wusheng on 2016/12/20.
+ */
+public class SkyWalkingSpanBuilder implements Tracer.SpanBuilder {
+ private String operationName;
+
+ SkyWalkingSpanBuilder(String operationName){
+ this.operationName = operationName;
+ }
+
+ @Override
+ public Tracer.SpanBuilder asChildOf(SpanContext spanContext) {
+ return null;
+ }
+
+ @Override
+ public Tracer.SpanBuilder asChildOf(Span span) {
+ return null;
+ }
+
+ @Override
+ public Tracer.SpanBuilder addReference(String referenceType, SpanContext referencedContext) {
+ if (referenceType.equals(References.CHILD_OF)) {
+ return asChildOf(referencedContext);
+ } else {
+ return this;
+ }
+ }
+
+ @Override
+ public Tracer.SpanBuilder withTag(String key, String value) {
+ return this;
+ }
+
+ @Override
+ public Tracer.SpanBuilder withTag(String key, boolean value) {
+ return this;
+ }
+
+ @Override
+ public Tracer.SpanBuilder withTag(String key, Number value) {
+ return this;
+ }
+
+ @Override
+ public Tracer.SpanBuilder withStartTimestamp(long microseconds) {
+ return this;
+ }
+
+ @Override
+ public Span start() {
+ return new SkyWalkingSpan();
+ }
+
+ @Override
+ public Iterable> baggageItems() {
+ return null;
+ }
+}
diff --git a/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java
new file mode 100644
index 0000000000000000000000000000000000000000..8b1aa7968e863529d4dcbf4ec50fb6d1a2bcd2d1
--- /dev/null
+++ b/skywalking-application-toolkit/skywalking-toolkit-opentracing/src/main/java/com/a/eye/skywalking/toolkit/opentracing/SkyWalkingTracer.java
@@ -0,0 +1,27 @@
+package com.a.eye.skywalking.toolkit.opentracing;
+
+import io.opentracing.SpanContext;
+import io.opentracing.Tracer;
+import io.opentracing.propagation.Format;
+
+/**
+ * Created by wusheng on 2016/12/20.
+ */
+public class SkyWalkingTracer implements Tracer{
+ public static Tracer INSTANCE = new SkyWalkingTracer();
+
+ @Override
+ public SpanBuilder buildSpan(String operationName) {
+ return new SkyWalkingSpanBuilder(operationName);
+ }
+
+ @Override
+ public void inject(SpanContext spanContext, Format format, C c) {
+
+ }
+
+ @Override
+ public SpanContext extract(Format format, C c) {
+ return null;
+ }
+}