From bd9d21fc5b522c25e4c9ae6589cceef32a4a6357 Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Sun, 29 Oct 2017 15:10:47 +0800 Subject: [PATCH] The handler in UI module with jetty server start successful. --- .../collector/boot/CollectorBootStartUp.java | 2 +- .../grpc/manager/GRPCManagerProvider.java | 20 ++++- .../service/GRPCManagerServiceImpl.java | 17 ++++- .../jetty/manager/JettyManagerProvider.java | 20 ++++- .../service/JettyManagerServiceImpl.java | 17 ++++- .../ui/jetty/UIModuleJettyProvider.java | 2 + .../application/ApplicationsGetHandler.java | 75 +++++++++++++++++++ 7 files changed, 144 insertions(+), 9 deletions(-) create mode 100644 apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java index b0e3ddd40..d747733a0 100644 --- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java @@ -52,7 +52,7 @@ public class CollectorBootStartUp { } try { - Thread.sleep(10000); + Thread.sleep(60000); } catch (InterruptedException e) { } } diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java index 6864b3561..7dd17b3df 100644 --- a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/GRPCManagerProvider.java @@ -18,18 +18,28 @@ package org.skywalking.apm.collector.grpc.manager; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerService; import org.skywalking.apm.collector.grpc.manager.service.GRPCManagerServiceImpl; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.grpc.GRPCServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class GRPCManagerProvider extends ModuleProvider { + private final Logger logger = LoggerFactory.getLogger(GRPCManagerProvider.class); + + private Map servers = new HashMap<>(); + @Override public String name() { return "gRPC"; } @@ -39,7 +49,7 @@ public class GRPCManagerProvider extends ModuleProvider { } @Override public void prepare(Properties config) throws ServiceNotProvidedException { - this.registerServiceImplementation(GRPCManagerService.class, new GRPCManagerServiceImpl()); + this.registerServiceImplementation(GRPCManagerService.class, new GRPCManagerServiceImpl(servers)); } @Override public void start(Properties config) throws ServiceNotProvidedException { @@ -47,7 +57,13 @@ public class GRPCManagerProvider extends ModuleProvider { } @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { - + servers.values().forEach(server -> { + try { + server.start(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } + }); } @Override public String[] requiredModules() { diff --git a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java index 74ac4a87b..d2b5c581d 100644 --- a/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java +++ b/apm-collector/apm-collector-grpc-manager/collector-grpc-manager-provider/src/main/java/org/skywalking/apm/collector/grpc/manager/service/GRPCManagerServiceImpl.java @@ -18,17 +18,25 @@ package org.skywalking.apm.collector.grpc.manager.service; -import java.util.HashMap; import java.util.Map; import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerException; import org.skywalking.apm.collector.server.grpc.GRPCServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class GRPCManagerServiceImpl implements GRPCManagerService { - private Map servers = new HashMap<>(); + private final Logger logger = LoggerFactory.getLogger(GRPCManagerServiceImpl.class); + + private final Map servers; + + public GRPCManagerServiceImpl(Map servers) { + this.servers = servers; + } @Override public Server getElseCreateServer(String host, int port) { String id = host + String.valueOf(port); @@ -36,6 +44,11 @@ public class GRPCManagerServiceImpl implements GRPCManagerService { return servers.get(id); } else { GRPCServer server = new GRPCServer(host, port); + try { + server.initialize(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } servers.put(id, server); return server; } diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java index 8dfb75fe5..f3c0a8d0f 100644 --- a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/JettyManagerProvider.java @@ -18,18 +18,28 @@ package org.skywalking.apm.collector.jetty.manager; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService; import org.skywalking.apm.collector.jetty.manager.service.JettyManagerServiceImpl; +import org.skywalking.apm.collector.server.ServerException; +import org.skywalking.apm.collector.server.jetty.JettyServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class JettyManagerProvider extends ModuleProvider { + private final Logger logger = LoggerFactory.getLogger(JettyManagerProvider.class); + + private Map servers = new HashMap<>(); + @Override public String name() { return "jetty"; } @@ -39,7 +49,7 @@ public class JettyManagerProvider extends ModuleProvider { } @Override public void prepare(Properties config) throws ServiceNotProvidedException { - this.registerServiceImplementation(JettyManagerService.class, new JettyManagerServiceImpl()); + this.registerServiceImplementation(JettyManagerService.class, new JettyManagerServiceImpl(servers)); } @Override public void start(Properties config) throws ServiceNotProvidedException { @@ -47,7 +57,13 @@ public class JettyManagerProvider extends ModuleProvider { } @Override public void notifyAfterCompleted() throws ServiceNotProvidedException { - + servers.values().forEach(server -> { + try { + server.start(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } + }); } @Override public String[] requiredModules() { diff --git a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java index 2bf0e4cef..e6807d9be 100644 --- a/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java +++ b/apm-collector/apm-collector-jetty-manager/collector-jetty-manager-provider/src/main/java/org/skywalking/apm/collector/jetty/manager/service/JettyManagerServiceImpl.java @@ -18,17 +18,25 @@ package org.skywalking.apm.collector.jetty.manager.service; -import java.util.HashMap; import java.util.Map; import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.ServerException; import org.skywalking.apm.collector.server.jetty.JettyServer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author peng-yongsheng */ public class JettyManagerServiceImpl implements JettyManagerService { - private Map servers = new HashMap<>(); + private final Logger logger = LoggerFactory.getLogger(JettyManagerServiceImpl.class); + + private final Map servers; + + public JettyManagerServiceImpl(Map servers) { + this.servers = servers; + } @Override public Server getElseCreateServer(String host, int port, String contextPath) { String id = host + String.valueOf(port); @@ -36,6 +44,11 @@ public class JettyManagerServiceImpl implements JettyManagerService { return servers.get(id); } else { JettyServer server = new JettyServer(host, port, contextPath); + try { + server.initialize(); + } catch (ServerException e) { + logger.error(e.getMessage(), e); + } servers.put(id, server); return server; } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java index 9911a2136..238b80fa9 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/UIModuleJettyProvider.java @@ -29,6 +29,7 @@ import org.skywalking.apm.collector.jetty.manager.JettyManagerModule; import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService; import org.skywalking.apm.collector.server.Server; import org.skywalking.apm.collector.ui.UIModule; +import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler; /** * @author peng-yongsheng @@ -57,6 +58,7 @@ public class UIModuleJettyProvider extends ModuleProvider { try { JettyManagerService managerService = getManager().find(JettyManagerModule.NAME).getService(JettyManagerService.class); Server jettyServer = managerService.getElseCreateServer(host, port, contextPath); + jettyServer.addHandler(new ApplicationsGetHandler()); ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class); moduleRegisterService.register(UIModule.NAME, this.name(), new UIModuleRegistration(host, port, contextPath)); diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java new file mode 100644 index 000000000..fc545129b --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/skywalking/apm/collector/ui/jetty/handler/application/ApplicationsGetHandler.java @@ -0,0 +1,75 @@ +/* + * Copyright 2017, OpenSkywalking Organization All rights reserved. + * + * Licensed 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. + * + * Project repository: https://github.com/OpenSkywalking/skywalking + */ + +package org.skywalking.apm.collector.ui.jetty.handler.application; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import javax.servlet.http.HttpServletRequest; +import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; +import org.skywalking.apm.collector.server.jetty.JettyHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author peng-yongsheng + */ +public class ApplicationsGetHandler extends JettyHandler { + + private final Logger logger = LoggerFactory.getLogger(ApplicationsGetHandler.class); + + @Override public String pathSpec() { + return "/applications"; + } + +// private ApplicationService service = new ApplicationService(); + + @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { + if (!req.getParameterMap().containsKey("startTime") || !req.getParameterMap().containsKey("endTime")) { + throw new ArgumentsParseException("must contains startTime. endTime parameter"); + } + + String startTimeStr = req.getParameter("startTime"); + String endTimeStr = req.getParameter("endTime"); + logger.debug("applications get start time: {}, end time: {}", startTimeStr, endTimeStr); + + long startTime; + try { + startTime = Long.parseLong(startTimeStr); + } catch (NumberFormatException e) { + throw new ArgumentsParseException("start time must be long"); + } + + long endTime; + try { + endTime = Long.parseLong(endTimeStr); + } catch (NumberFormatException e) { + throw new ArgumentsParseException("end time must be long"); + } + +// return service.getApplications(startTime, endTime); + + JsonObject result = new JsonObject(); + result.addProperty("result", "Yes"); + return result; + } + + @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { + throw new UnsupportedOperationException(); + } +}