diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml
index 48211e35bb6cffc745d5792a2a7ca2cb25dde496..eb0e0fa27bcecfa23e74ecafe56b1eaab5ccc79a 100644
--- a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml
+++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/pom.xml
@@ -61,5 +61,15 @@
segment-parser-define
${project.version}
+
+ org.apache.skywalking
+ jvm-define
+ ${project.version}
+
+
+ org.apache.skywalking
+ metric-define
+ ${project.version}
+
\ No newline at end of file
diff --git a/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceHeartBeatServletHandler.java b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceHeartBeatServletHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..16eaa08aed4d760fe212d45ce8f4d994bdc85439
--- /dev/null
+++ b/apm-collector/apm-collector-agent/agent-jetty/agent-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/agent/jetty/provider/handler/InstanceHeartBeatServletHandler.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.apm.collector.agent.jetty.provider.handler;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import java.io.IOException;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.skywalking.apm.collector.analysis.metric.define.AnalysisMetricModule;
+import org.apache.skywalking.apm.collector.analysis.metric.define.service.IInstanceHeartBeatService;
+import org.apache.skywalking.apm.collector.core.module.ModuleManager;
+import org.apache.skywalking.apm.collector.server.jetty.ArgumentsParseException;
+import org.apache.skywalking.apm.collector.server.jetty.JettyHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * @author peng-yongsheng
+ */
+public class InstanceHeartBeatServletHandler extends JettyHandler {
+
+ private final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatServletHandler.class);
+
+ private final IInstanceHeartBeatService instanceHeartBeatService;
+ private final Gson gson = new Gson();
+
+ private static final String INSTANCE_ID = "ii";
+ private static final String HEARTBEAT_TIME = "ht";
+
+ public InstanceHeartBeatServletHandler(ModuleManager moduleManager) {
+ this.instanceHeartBeatService = moduleManager.find(AnalysisMetricModule.NAME).getService(IInstanceHeartBeatService.class);
+ }
+
+ @Override public String pathSpec() {
+ return "/instance/heartbeat";
+ }
+
+ @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException, IOException {
+ JsonObject responseJson = new JsonObject();
+ try {
+ JsonObject heartBeat = gson.fromJson(req.getReader(), JsonObject.class);
+ int instanceId = heartBeat.get(INSTANCE_ID).getAsInt();
+ long heartBeatTime = heartBeat.get(HEARTBEAT_TIME).getAsLong();
+
+ instanceHeartBeatService.heartBeat(instanceId, heartBeatTime);
+ } catch (IOException e) {
+ logger.error(e.getMessage(), e);
+ }
+ return responseJson;
+ }
+}
diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java
index a8f72f85eba6d61961d65269173806cb93cdd7e8..ed84f05b5e2752e6fb30e9e23764b38d001fa90e 100644
--- a/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java
+++ b/apm-collector/apm-collector-analysis/analysis-register/register-define/src/main/java/org/apache/skywalking/apm/collector/analysis/register/define/service/IInstanceIDService.java
@@ -26,7 +26,5 @@ import org.apache.skywalking.apm.collector.core.module.Service;
public interface IInstanceIDService extends Service {
int getOrCreateByAgentUUID(int applicationId, String agentUUID, long registerTime, String osInfo);
- void recover(int instanceId, int applicationId, long registerTime, String osInfo);
-
int getOrCreateByAddressId(int applicationId, int addressId, long registerTime);
}
diff --git a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java
index d1891457839d0b5aa6e9b5ca93c23553864e78fc..803e8d9f9280921383a62918f115854470da35ea 100644
--- a/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java
+++ b/apm-collector/apm-collector-analysis/analysis-register/register-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/register/provider/service/InstanceIDService.java
@@ -29,8 +29,6 @@ import org.apache.skywalking.apm.collector.core.module.ModuleManager;
import org.apache.skywalking.apm.collector.core.util.BooleanUtils;
import org.apache.skywalking.apm.collector.core.util.Const;
import org.apache.skywalking.apm.collector.core.util.ObjectUtils;
-import org.apache.skywalking.apm.collector.storage.StorageModule;
-import org.apache.skywalking.apm.collector.storage.dao.register.IInstanceRegisterDAO;
import org.apache.skywalking.apm.collector.storage.table.register.Instance;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -45,7 +43,6 @@ public class InstanceIDService implements IInstanceIDService {
private final ModuleManager moduleManager;
private InstanceCacheService instanceCacheService;
private Graph instanceRegisterGraph;
- private IInstanceRegisterDAO instanceRegisterDAO;
private ApplicationCacheService applicationCacheService;
public InstanceIDService(ModuleManager moduleManager) {
@@ -66,13 +63,6 @@ public class InstanceIDService implements IInstanceIDService {
return instanceRegisterGraph;
}
- private IInstanceRegisterDAO getInstanceRegisterDAO() {
- if (ObjectUtils.isEmpty(instanceRegisterDAO)) {
- instanceRegisterDAO = moduleManager.find(StorageModule.NAME).getService(IInstanceRegisterDAO.class);
- }
- return instanceRegisterDAO;
- }
-
private ApplicationCacheService getApplicationCacheService() {
if (ObjectUtils.isEmpty(applicationCacheService)) {
this.applicationCacheService = moduleManager.find(CacheModule.NAME).getService(ApplicationCacheService.class);
@@ -123,19 +113,4 @@ public class InstanceIDService implements IInstanceIDService {
}
return instanceId;
}
-
- @Override public void recover(int instanceId, int applicationId, long registerTime, String osInfo) {
- logger.debug("instance recover, instance id: {}, application id: {}, register time: {}", instanceId, applicationId, registerTime);
- Instance instance = new Instance();
- instance.setId(String.valueOf(instanceId));
- instance.setApplicationId(applicationId);
- instance.setApplicationCode(getApplicationCacheService().getApplicationById(applicationId).getApplicationCode());
- instance.setAgentUUID("");
- instance.setRegisterTime(registerTime);
- instance.setHeartBeatTime(registerTime);
- instance.setInstanceId(instanceId);
- instance.setOsInfo(osInfo);
-
- getInstanceRegisterDAO().save(instance);
- }
}