diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java index d0dcd728e..0a8855cc0 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/Module.java @@ -103,7 +103,7 @@ public abstract class Module { /** * @return providers of this module */ - public final List providers() throws ProviderNotFoundException { + final List providers() throws ProviderNotFoundException { if (loadedProviders.size() == 0) { throw new ProviderNotFoundException("no provider exists."); } @@ -111,7 +111,7 @@ public abstract class Module { return loadedProviders; } - public final ModuleProvider provider() throws ProviderNotFoundException, DuplicateProviderException { + final ModuleProvider provider() throws ProviderNotFoundException, DuplicateProviderException { if (loadedProviders.size() == 0) { throw new ProviderNotFoundException("no provider exists."); } else if (loadedProviders.size() > 1) { @@ -120,4 +120,12 @@ public abstract class Module { return loadedProviders.getFirst(); } + + public T getService(Class serviceType) throws ServiceNotProvidedException { + try { + return provider().getService(serviceType); + } catch (ProviderNotFoundException | DuplicateProviderException e) { + throw new ServiceNotProvidedException(e.getMessage()); + } + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java index 05d498879..c49e1bde6 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleProvider.java @@ -31,8 +31,8 @@ import org.skywalking.apm.collector.core.module.instrument.ServiceInstrumentatio * @author wu-sheng, peng-yongsheng */ public abstract class ModuleProvider { - protected ModuleManager manager; - protected Module module; + private ModuleManager manager; + private Module module; private Map, Service> services = new HashMap<>(); public ModuleProvider() { @@ -46,6 +46,10 @@ public abstract class ModuleProvider { this.module = module; } + protected ModuleManager getManager() { + return manager; + } + /** * @return the name of this provider. */ @@ -121,7 +125,7 @@ public abstract class ModuleProvider { } } - public T getService(Class serviceType) throws ServiceNotProvidedException { + T getService(Class serviceType) throws ServiceNotProvidedException { Service serviceImpl = services.get(serviceType); if (serviceImpl != null) { return (T)serviceImpl; diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml index d3131101c..5f77c1ded 100644 --- a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/pom.xml @@ -41,6 +41,11 @@ collector-cluster-define ${project.version} + + org.skywalking + collector-server-manager-define + ${project.version} + org.skywalking server-component diff --git a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java index d9d68829a..5580a25a8 100644 --- a/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java +++ b/apm-collector/apm-collector-naming/collector-naming-jetty-provider/src/main/java/org/skywalking/apm/collector/naming/jetty/NamingModuleJettyProvider.java @@ -21,17 +21,29 @@ package org.skywalking.apm.collector.naming.jetty; import java.util.Properties; import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.core.module.Module; +import org.skywalking.apm.collector.core.module.ModuleNotFoundException; import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.skywalking.apm.collector.naming.NamingModule; +import org.skywalking.apm.collector.naming.jetty.handler.AgentGRPCNamingHandler; +import org.skywalking.apm.collector.naming.jetty.handler.AgentJettyNamingHandler; +import org.skywalking.apm.collector.naming.jetty.handler.UIJettyNamingHandler; +import org.skywalking.apm.collector.server.Server; +import org.skywalking.apm.collector.server.manager.ServerManagerModule; +import org.skywalking.apm.collector.server.manager.service.JettyServerConfig; +import org.skywalking.apm.collector.server.manager.service.JettyServerManagerService; /** * @author peng-yongsheng */ public class NamingModuleJettyProvider extends ModuleProvider { + private static final String HOST = "host"; + private static final String PORT = "port"; + private static final String CONTEXT_PATH = "context_path"; + @Override public String name() { - return "jetty"; + return "Jetty"; } @Override public Class module() { @@ -39,6 +51,22 @@ public class NamingModuleJettyProvider extends ModuleProvider { } @Override public void prepare(Properties config) throws ServiceNotProvidedException { + String host = config.getProperty(HOST); + String port = config.getProperty(PORT); + String contextPath = config.getProperty(CONTEXT_PATH); + JettyServerConfig serverConfig = new JettyServerConfig(host, Integer.valueOf(port), contextPath); + + try { + JettyServerManagerService managerService = getManager().find(ServerManagerModule.NAME).getService(JettyServerManagerService.class); + Server jettyServer = managerService.getElseCreateServer(serverConfig); + jettyServer.addHandler(new AgentGRPCNamingHandler()); + jettyServer.addHandler(new AgentJettyNamingHandler()); + jettyServer.addHandler(new UIJettyNamingHandler()); + +// ModuleRegistrationGetService registrationGetService = getManager().find(ClusterModule.NAME).getService(ModuleRegistrationGetService.class); + } catch (ModuleNotFoundException e) { + throw new ServiceNotProvidedException(e.getMessage()); + } } @Override public void start(Properties config) throws ServiceNotProvidedException { @@ -50,6 +78,6 @@ public class NamingModuleJettyProvider extends ModuleProvider { } @Override public String[] requiredModules() { - return new String[] {ClusterModule.NAME}; + return new String[] {ServerManagerModule.NAME, ClusterModule.NAME}; } }