提交 9c829a57 编写于 作者: P peng-yongsheng

Add naming module jetty implement.

上级 e7f613ee
......@@ -103,7 +103,7 @@ public abstract class Module {
/**
* @return providers of this module
*/
public final List<ModuleProvider> providers() throws ProviderNotFoundException {
final List<ModuleProvider> 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 extends Service> T getService(Class<T> serviceType) throws ServiceNotProvidedException {
try {
return provider().getService(serviceType);
} catch (ProviderNotFoundException | DuplicateProviderException e) {
throw new ServiceNotProvidedException(e.getMessage());
}
}
}
......@@ -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<Class<? extends Service>, 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 extends Service> T getService(Class<T> serviceType) throws ServiceNotProvidedException {
<T extends Service> T getService(Class<T> serviceType) throws ServiceNotProvidedException {
Service serviceImpl = services.get(serviceType);
if (serviceImpl != null) {
return (T)serviceImpl;
......
......@@ -41,6 +41,11 @@
<artifactId>collector-cluster-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-server-manager-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>server-component</artifactId>
......
......@@ -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<? extends Module> 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};
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册