diff --git a/apm-collector/apm-collector-agentjvm/pom.xml b/apm-collector/apm-collector-agentjvm/pom.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8f20f17ab766f479b32f762f579464eb10aa1e5b
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/pom.xml
@@ -0,0 +1,32 @@
+
+
+
+ apm-collector
+ org.skywalking
+ 3.2-2017
+
+ 4.0.0
+
+ apm-collector-agentjvm
+ jar
+
+
+
+ org.skywalking
+ apm-collector-cluster
+ ${project.version}
+
+
+ org.skywalking
+ apm-collector-server
+ ${project.version}
+
+
+ org.skywalking
+ apm-network
+ ${project.version}
+
+
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..5152b68d635132e30d9e3e65f674a3feeb9e97a1
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleContext.java
@@ -0,0 +1,12 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import org.skywalking.apm.collector.core.framework.Context;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleContext extends Context {
+ public AgentJVMModuleContext(String groupName) {
+ super(groupName);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java
new file mode 100644
index 0000000000000000000000000000000000000000..29826dd6a3d278d7095b8d3ee700c20b3a835c7b
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java
@@ -0,0 +1,51 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import java.util.List;
+import java.util.Map;
+import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine;
+import org.skywalking.apm.collector.core.client.Client;
+import org.skywalking.apm.collector.core.client.ClientException;
+import org.skywalking.apm.collector.core.client.DataMonitor;
+import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine;
+import org.skywalking.apm.collector.core.cluster.ClusterModuleContext;
+import org.skywalking.apm.collector.core.config.ConfigParseException;
+import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.core.framework.DefineException;
+import org.skywalking.apm.collector.core.framework.Handler;
+import org.skywalking.apm.collector.core.module.ModuleDefine;
+import org.skywalking.apm.collector.core.server.Server;
+import org.skywalking.apm.collector.core.server.ServerException;
+import org.skywalking.apm.collector.core.server.ServerHolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public abstract class AgentJVMModuleDefine extends ModuleDefine implements ClusterDataListenerDefine {
+
+ private final Logger logger = LoggerFactory.getLogger(AgentJVMModuleDefine.class);
+
+ @Override
+ public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException {
+ try {
+ configParser().parse(config);
+ Server server = server();
+ serverHolder.holdServer(server, handlerList());
+
+ ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration());
+ } catch (ConfigParseException | ServerException e) {
+ throw new AgentJVMModuleException(e.getMessage(), e);
+ }
+ }
+
+ @Override protected final Client createClient(DataMonitor dataMonitor) {
+ throw new UnsupportedOperationException("");
+ }
+
+ @Override public final boolean defaultModule() {
+ return true;
+ }
+
+ public abstract List handlerList();
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java
new file mode 100644
index 0000000000000000000000000000000000000000..6732f2636b7ce52fce36b36d92aa2937339f55d0
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleException.java
@@ -0,0 +1,16 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import org.skywalking.apm.collector.core.module.ModuleException;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleException extends ModuleException {
+ public AgentJVMModuleException(String message) {
+ super(message);
+ }
+
+ public AgentJVMModuleException(String message, Throwable cause) {
+ super(message, cause);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java
new file mode 100644
index 0000000000000000000000000000000000000000..89b9422904c7a601c1b0d6140e4a10ca37f09d34
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java
@@ -0,0 +1,25 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import org.skywalking.apm.collector.core.framework.Context;
+import org.skywalking.apm.collector.core.module.ModuleGroupDefine;
+import org.skywalking.apm.collector.core.module.ModuleInstaller;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleGroupDefine implements ModuleGroupDefine {
+
+ public static final String GROUP_NAME = "agent_jvm";
+
+ @Override public String name() {
+ return GROUP_NAME;
+ }
+
+ @Override public Context groupContext() {
+ return new AgentJVMModuleContext(GROUP_NAME);
+ }
+
+ @Override public ModuleInstaller moduleInstaller() {
+ return new AgentJVMModuleInstaller();
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java
new file mode 100644
index 0000000000000000000000000000000000000000..defe8786e5d75939b18e600db0111399da96f032
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java
@@ -0,0 +1,36 @@
+package org.skywalking.apm.collector.agentjvm;
+
+import java.util.Iterator;
+import java.util.Map;
+import org.skywalking.apm.collector.core.client.ClientException;
+import org.skywalking.apm.collector.core.framework.CollectorContextHelper;
+import org.skywalking.apm.collector.core.framework.DefineException;
+import org.skywalking.apm.collector.core.module.ModuleDefine;
+import org.skywalking.apm.collector.core.module.ModuleInstaller;
+import org.skywalking.apm.collector.core.server.ServerHolder;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMModuleInstaller implements ModuleInstaller {
+
+ private final Logger logger = LoggerFactory.getLogger(AgentJVMModuleInstaller.class);
+
+ @Override public void install(Map moduleConfig,
+ Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException {
+ logger.info("beginning agent jvm module install");
+
+ AgentJVMModuleContext context = new AgentJVMModuleContext(AgentJVMModuleGroupDefine.GROUP_NAME);
+ CollectorContextHelper.INSTANCE.putContext(context);
+
+ Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator();
+ while (moduleDefineEntry.hasNext()) {
+ ModuleDefine moduleDefine = moduleDefineEntry.next().getValue();
+ logger.info("module {} initialize", moduleDefine.getClass().getName());
+ moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..1376814cdf78ed0039bbaf84976b18ed8f9b0435
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfig.java
@@ -0,0 +1,9 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCConfig {
+ public static String HOST;
+ public static int PORT;
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java
new file mode 100644
index 0000000000000000000000000000000000000000..d5d1996aae787f05a9a3676030a99e687f672073
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCConfigParser.java
@@ -0,0 +1,27 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import java.util.Map;
+import org.skywalking.apm.collector.core.config.ConfigParseException;
+import org.skywalking.apm.collector.core.module.ModuleConfigParser;
+import org.skywalking.apm.collector.core.util.ObjectUtils;
+import org.skywalking.apm.collector.core.util.StringUtils;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCConfigParser implements ModuleConfigParser {
+
+ private static final String HOST = "host";
+ private static final String PORT = "port";
+
+ @Override public void parse(Map config) throws ConfigParseException {
+ if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(HOST))) {
+ AgentJVMGRPCConfig.HOST = "localhost";
+ }
+ if (ObjectUtils.isEmpty(config) || StringUtils.isEmpty(config.get(PORT))) {
+ AgentJVMGRPCConfig.PORT = 11800;
+ } else {
+ AgentJVMGRPCConfig.PORT = (Integer)config.get(PORT);
+ }
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0ea0aa61bad6cac8fa68b5cbac58ad0f3735e81
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java
@@ -0,0 +1,17 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import org.skywalking.apm.collector.agentjvm.AgentJVMModuleGroupDefine;
+import org.skywalking.apm.collector.cluster.ClusterModuleDefine;
+import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCDataListener extends ClusterDataListener {
+
+ public static final String PATH = ClusterModuleDefine.BASE_CATALOG + "." + AgentJVMModuleGroupDefine.GROUP_NAME + "." + AgentJVMGRPCModuleDefine.MODULE_NAME;
+
+ @Override public String path() {
+ return PATH;
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java
new file mode 100644
index 0000000000000000000000000000000000000000..358adedfbd69a34d7461f69fa53a044432650d63
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleDefine.java
@@ -0,0 +1,51 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import java.util.LinkedList;
+import java.util.List;
+import org.skywalking.apm.collector.agentjvm.AgentJVMModuleDefine;
+import org.skywalking.apm.collector.agentjvm.AgentJVMModuleGroupDefine;
+import org.skywalking.apm.collector.agentjvm.grpc.handler.JVMMetricsServiceHandler;
+import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
+import org.skywalking.apm.collector.core.framework.Handler;
+import org.skywalking.apm.collector.core.module.ModuleConfigParser;
+import org.skywalking.apm.collector.core.module.ModuleRegistration;
+import org.skywalking.apm.collector.core.server.Server;
+import org.skywalking.apm.collector.server.grpc.GRPCServer;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCModuleDefine extends AgentJVMModuleDefine {
+
+ public static final String MODULE_NAME = "grpc";
+
+ @Override protected String group() {
+ return AgentJVMModuleGroupDefine.GROUP_NAME;
+ }
+
+ @Override public String name() {
+ return MODULE_NAME;
+ }
+
+ @Override protected ModuleConfigParser configParser() {
+ return new AgentJVMGRPCConfigParser();
+ }
+
+ @Override protected Server server() {
+ return new GRPCServer(AgentJVMGRPCConfig.HOST, AgentJVMGRPCConfig.PORT);
+ }
+
+ @Override protected ModuleRegistration registration() {
+ return new AgentJVMGRPCModuleRegistration();
+ }
+
+ @Override public ClusterDataListener listener() {
+ return new AgentJVMGRPCDataListener();
+ }
+
+ @Override public List handlerList() {
+ List handlers = new LinkedList<>();
+ handlers.add(new JVMMetricsServiceHandler());
+ return handlers;
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java
new file mode 100644
index 0000000000000000000000000000000000000000..ca249dea7806fa3ec12be45b6517bdedbc58a6ac
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCModuleRegistration.java
@@ -0,0 +1,13 @@
+package org.skywalking.apm.collector.agentjvm.grpc;
+
+import org.skywalking.apm.collector.core.module.ModuleRegistration;
+
+/**
+ * @author pengys5
+ */
+public class AgentJVMGRPCModuleRegistration extends ModuleRegistration {
+
+ @Override public Value buildValue() {
+ return new Value(AgentJVMGRPCConfig.HOST, AgentJVMGRPCConfig.PORT, null);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..7166b980d52588ad2b54ef01e4c0f7df39e8382d
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/handler/JVMMetricsServiceHandler.java
@@ -0,0 +1,17 @@
+package org.skywalking.apm.collector.agentjvm.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.Downstream;
+import org.skywalking.apm.network.proto.JVMMetrics;
+import org.skywalking.apm.network.proto.JVMMetricsServiceGrpc;
+
+/**
+ * @author pengys5
+ */
+public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler {
+
+ @Override public void collect(JVMMetrics request, StreamObserver responseObserver) {
+ super.collect(request, responseObserver);
+ }
+}
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define
new file mode 100644
index 0000000000000000000000000000000000000000..0b2741b980836f02ccc3e4adce0901c5f5efa4e5
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/group.define
@@ -0,0 +1 @@
+org.skywalking.apm.collector.agentjvm.AgentJVMModuleGroupDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define
new file mode 100644
index 0000000000000000000000000000000000000000..78d6e4a4179fc1c333b427aacc578c0fb95d9a6c
--- /dev/null
+++ b/apm-collector/apm-collector-agentjvm/src/main/resources/META-INF/defines/module.define
@@ -0,0 +1 @@
+org.skywalking.apm.collector.agentjvm.grpc.AgentJVMGRPCModuleDefine
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java
index e9fca8ad355a560257640824b854be77e64378d7..509009c37137e46e4a68a62b6af504b541680a40 100644
--- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCModuleDefine.java
@@ -1,8 +1,12 @@
package org.skywalking.apm.collector.agentregister.grpc;
+import java.util.LinkedList;
import java.util.List;
import org.skywalking.apm.collector.agentregister.AgentRegisterModuleDefine;
import org.skywalking.apm.collector.agentregister.AgentRegisterModuleGroupDefine;
+import org.skywalking.apm.collector.agentregister.grpc.handler.ApplicationRegisterServiceHandler;
+import org.skywalking.apm.collector.agentregister.grpc.handler.InstanceDiscoveryServiceHandler;
+import org.skywalking.apm.collector.agentregister.grpc.handler.ServiceNameDiscoveryServiceHandler;
import org.skywalking.apm.collector.core.cluster.ClusterDataListener;
import org.skywalking.apm.collector.core.framework.Handler;
import org.skywalking.apm.collector.core.module.ModuleConfigParser;
@@ -42,6 +46,10 @@ public class AgentRegisterGRPCModuleDefine extends AgentRegisterModuleDefine {
}
@Override public List handlerList() {
- return null;
+ List handlers = new LinkedList<>();
+ handlers.add(new ApplicationRegisterServiceHandler());
+ handlers.add(new InstanceDiscoveryServiceHandler());
+ handlers.add(new ServiceNameDiscoveryServiceHandler());
+ return handlers;
}
}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..705c2b74e31dbb7ef3889aaf862c761588662b48
--- /dev/null
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ApplicationRegisterServiceHandler.java
@@ -0,0 +1,16 @@
+package org.skywalking.apm.collector.agentregister.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.Application;
+import org.skywalking.apm.network.proto.ApplicationMapping;
+import org.skywalking.apm.network.proto.ApplicationRegisterServiceGrpc;
+
+/**
+ * @author pengys5
+ */
+public class ApplicationRegisterServiceHandler extends ApplicationRegisterServiceGrpc.ApplicationRegisterServiceImplBase implements GRPCHandler {
+ @Override public void register(Application request, StreamObserver responseObserver) {
+
+ }
+}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..70f64ed9b3fe1fa43c38e7d13b21f815395c3fa6
--- /dev/null
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/InstanceDiscoveryServiceHandler.java
@@ -0,0 +1,30 @@
+package org.skywalking.apm.collector.agentregister.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.ApplicationInstance;
+import org.skywalking.apm.network.proto.ApplicationInstanceHeartbeat;
+import org.skywalking.apm.network.proto.ApplicationInstanceMapping;
+import org.skywalking.apm.network.proto.ApplicationInstanceRecover;
+import org.skywalking.apm.network.proto.Downstream;
+import org.skywalking.apm.network.proto.InstanceDiscoveryServiceGrpc;
+
+/**
+ * @author pengys5
+ */
+public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceImplBase implements GRPCHandler {
+
+ @Override
+ public void register(ApplicationInstance request, StreamObserver responseObserver) {
+ super.register(request, responseObserver);
+ }
+
+ @Override public void heartbeat(ApplicationInstanceHeartbeat request, StreamObserver responseObserver) {
+ super.heartbeat(request, responseObserver);
+ }
+
+ @Override
+ public void registerRecover(ApplicationInstanceRecover request, StreamObserver responseObserver) {
+ super.registerRecover(request, responseObserver);
+ }
+}
diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..a0e040c9f4aecf5c24250b35648e6187a5e6a795
--- /dev/null
+++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/handler/ServiceNameDiscoveryServiceHandler.java
@@ -0,0 +1,18 @@
+package org.skywalking.apm.collector.agentregister.grpc.handler;
+
+import io.grpc.stub.StreamObserver;
+import org.skywalking.apm.collector.server.grpc.GRPCHandler;
+import org.skywalking.apm.network.proto.ServiceNameCollection;
+import org.skywalking.apm.network.proto.ServiceNameDiscoveryServiceGrpc;
+import org.skywalking.apm.network.proto.ServiceNameMappingCollection;
+
+/**
+ * @author pengys5
+ */
+public class ServiceNameDiscoveryServiceHandler extends ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceImplBase implements GRPCHandler {
+
+ @Override public void discovery(ServiceNameCollection request,
+ StreamObserver responseObserver) {
+ super.discovery(request, responseObserver);
+ }
+}
diff --git a/apm-collector/apm-collector-boot/pom.xml b/apm-collector/apm-collector-boot/pom.xml
index 94efcc0fc8db48e24d8dcab8e2992f73e35e5291..dff459ea8a5f2aaffbef2653d7b05592f5752c04 100644
--- a/apm-collector/apm-collector-boot/pom.xml
+++ b/apm-collector/apm-collector-boot/pom.xml
@@ -43,5 +43,10 @@
apm-collector-agentregister
${project.version}
+
+ org.skywalking
+ apm-collector-agentjvm
+ ${project.version}
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java b/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java
index 00a5bf070e634f53a94be4e9a24d87c8f42d121f..18f1b8f2b5c5ed8e07864a8fce025b669f61b2be 100644
--- a/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java
+++ b/apm-collector/apm-collector-remote/src/main/java/org/skywalking/apm/collector/remote/RemoteModuleInstaller.java
@@ -13,6 +13,6 @@ import org.skywalking.apm.collector.core.server.ServerHolder;
public class RemoteModuleInstaller implements ModuleInstaller {
@Override public void install(Map moduleConfig, Map moduleDefineMap,
ServerHolder serverHolder) throws DefineException, ClientException {
-
+
}
}
diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..7a6dd08bf632a000ea4f1b7884ab03eebda47d3d
--- /dev/null
+++ b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCHandler.java
@@ -0,0 +1,9 @@
+package org.skywalking.apm.collector.server.grpc;
+
+import org.skywalking.apm.collector.core.framework.Handler;
+
+/**
+ * @author pengys5
+ */
+public interface GRPCHandler extends Handler {
+}
diff --git a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java
index 98c2f12db6929fc61c6694683d20fdac5fd3587b..592b44278762613cfe3dce8fcc587565e3e7744e 100644
--- a/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java
+++ b/apm-collector/apm-collector-server/src/main/java/org/skywalking/apm/collector/server/grpc/GRPCServer.java
@@ -50,5 +50,6 @@ public class GRPCServer implements Server {
}
@Override public void addHandler(Handler handler) {
+ nettyServerBuilder.addService((io.grpc.BindableService)handler);
}
}
diff --git a/apm-collector/pom.xml b/apm-collector/pom.xml
index 67c9b2384a1f2d773d4b3b11657d5b4d2ebb499b..a73fc46cd7917648f273c3f3c3c94db5e8927303 100644
--- a/apm-collector/pom.xml
+++ b/apm-collector/pom.xml
@@ -16,6 +16,7 @@
apm-collector-stream
apm-collector-agentserver
apm-collector-agentregister
+ apm-collector-agentjvm
apm