diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/Component.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/Component.java
new file mode 100644
index 000000000..17a22a64c
--- /dev/null
+++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/Component.java
@@ -0,0 +1,10 @@
+package org.skywalking.apm.network.trace.component;
+
+/**
+ * @author wusheng
+ */
+public interface Component {
+ int getId();
+
+ String getName();
+}
diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java
new file mode 100644
index 000000000..ef1169e92
--- /dev/null
+++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/ComponentsDefine.java
@@ -0,0 +1,8 @@
+package org.skywalking.apm.network.trace.component;
+
+/**
+ * @author wusheng
+ */
+public class ComponentsDefine {
+ public static final OfficialComponent TOMCAT = new OfficialComponent(1, "Tomcat");
+}
diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java
new file mode 100644
index 000000000..114066b42
--- /dev/null
+++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java
@@ -0,0 +1,24 @@
+package org.skywalking.apm.network.trace.component;
+
+/**
+ * @author wusheng
+ */
+public class OfficialComponent implements Component{
+ private int id;
+ private String name;
+
+ public OfficialComponent(int id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ @Override
+ public int getId() {
+ return id;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+}
diff --git a/apm-network/src/main/proto/TraceSegmentService.proto b/apm-network/src/main/proto/TraceSegmentService.proto
index 608faa70f..da9e216db 100644
--- a/apm-network/src/main/proto/TraceSegmentService.proto
+++ b/apm-network/src/main/proto/TraceSegmentService.proto
@@ -38,14 +38,16 @@ message SpanObject {
int64 startTime = 3;
int64 endTime = 4;
int32 operationNameId = 5;
- int32 peerId = 6;
- string peer = 7;
- SpanType spanType = 8;
- SpanLayer spanLayer = 9;
- string component = 10;
- bool isError = 11;
- repeated KeyValue tags = 12;
- repeated LogMessage logs = 13;
+ string operationName = 6;
+ int32 peerId = 7;
+ string peer = 8;
+ SpanType spanType = 9;
+ SpanLayer spanLayer = 10;
+ int32 componentId = 11;
+ string component = 12;
+ bool isError = 13;
+ repeated KeyValue tags = 14;
+ repeated LogMessage logs = 15;
}
enum SpanType {
diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/component/AbstractComponent.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/component/AbstractComponent.java
deleted file mode 100644
index ef42cd2aa..000000000
--- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/component/AbstractComponent.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.skywalking.apm.agent.core.context.component;
-
-/**
- * @author wusheng
- */
-public abstract class AbstractComponent {
- private int id;
- private String name;
-
- protected AbstractComponent(int id, String name) {
- this.id = id;
- this.name = name;
- }
-
- public int getId() {
- return id;
- }
-}
diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java
index eff8d6e95..917cec1c6 100644
--- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java
+++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractSpan.java
@@ -1,5 +1,6 @@
package org.skywalking.apm.agent.core.context.trace;
+import org.skywalking.apm.network.trace.component.Component;
/**
* The AbstractSpan represents the span's skeleton,
@@ -8,6 +9,14 @@ package org.skywalking.apm.agent.core.context.trace;
* @author wusheng
*/
public interface AbstractSpan {
+ /**
+ * Set the component id, which defines in {@link org.skywalking.apm.network.trace.component.ComponentsDefine}
+ * @param component
+ */
+ void setComponent(Component component);
+
+ void setComponent(String componentName);
+
void setLayer(SpanLayer layer);
/**
diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java
index 239f1b685..ad12e70a3 100644
--- a/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java
+++ b/apm-sniffer/apm-agent-core/src/main/java/org/skywalking/apm/agent/core/context/trace/AbstractTracingSpan.java
@@ -2,10 +2,10 @@ package org.skywalking.apm.agent.core.context.trace;
import java.util.LinkedList;
import java.util.List;
-import org.skywalking.apm.agent.core.context.component.AbstractComponent;
import org.skywalking.apm.agent.core.context.util.KeyValuePair;
import org.skywalking.apm.agent.core.context.util.ThrowableTransformer;
import org.skywalking.apm.agent.core.dictionary.DictionaryUtil;
+import org.skywalking.apm.network.trace.component.Component;
/**
* The AbstractTracingSpan represents a group of {@link AbstractSpan} implementations,
@@ -35,6 +35,8 @@ public abstract class AbstractTracingSpan implements AbstractSpan {
protected int componentId = 0;
+ protected String componentName;
+
/**
* Log is a concept from OpenTracing spec.
*
@@ -123,7 +125,13 @@ public abstract class AbstractTracingSpan implements AbstractSpan { this.layer = layer; } - public void setComponent(AbstractComponent component){ + @Override + public void setComponent(Component component) { this.componentId = component.getId(); } + + @Override + public void setComponent(String componentName) { + this.componentName = componentName; + } }