提交 50c14dd0 编写于 作者: P peng-yongsheng

Naming module and zookeeper provider in cluster module test successful.

上级 bd9d21fc
...@@ -72,10 +72,19 @@ ...@@ -72,10 +72,19 @@
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!-- jetty manager provider --> <!-- jetty manager provider -->
<!-- naming jetty provider -->
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-naming-jetty-provider</artifactId>
<version>${project.version}</version>
</dependency>
<!-- naming jetty provider -->
<!-- ui jetty provider -->
<dependency> <dependency>
<groupId>org.skywalking</groupId> <groupId>org.skywalking</groupId>
<artifactId>collector-ui-jetty-provider</artifactId> <artifactId>collector-ui-jetty-provider</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<!-- ui jetty provider -->
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -2,11 +2,11 @@ cluster: ...@@ -2,11 +2,11 @@ cluster:
zookeeper: zookeeper:
hostPort: localhost:2181 hostPort: localhost:2181
sessionTimeout: 100000 sessionTimeout: 100000
#agent_server: naming:
# jetty: jetty:
# host: localhost host: localhost
# port: 10800 port: 10800
# context_path: / context_path: /
#agent_stream: #agent_stream:
# grpc: # grpc:
# host: localhost # host: localhost
......
...@@ -20,7 +20,6 @@ package org.skywalking.apm.collector.cluster; ...@@ -20,7 +20,6 @@ package org.skywalking.apm.collector.cluster;
import org.skywalking.apm.collector.cluster.service.ModuleListenerService; import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.Service; import org.skywalking.apm.collector.core.module.Service;
...@@ -36,6 +35,6 @@ public class ClusterModule extends Module { ...@@ -36,6 +35,6 @@ public class ClusterModule extends Module {
} }
@Override public Class<? extends Service>[] services() { @Override public Class<? extends Service>[] services() {
return new Class[] {ModuleListenerService.class, ModuleRegisterService.class, ModuleRegistrationGetService.class}; return new Class[] {ModuleListenerService.class, ModuleRegisterService.class};
} }
} }
...@@ -21,7 +21,6 @@ package org.skywalking.apm.collector.cluster.redis; ...@@ -21,7 +21,6 @@ package org.skywalking.apm.collector.cluster.redis;
import java.util.Properties; import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegisterService; import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegisterService;
import org.skywalking.apm.collector.cluster.redis.service.RedisModuleRegistrationGetService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ModuleProvider;
...@@ -42,7 +41,6 @@ public class ClusterModuleRedisProvider extends ModuleProvider { ...@@ -42,7 +41,6 @@ public class ClusterModuleRedisProvider extends ModuleProvider {
@Override public void prepare(Properties config) throws ServiceNotProvidedException { @Override public void prepare(Properties config) throws ServiceNotProvidedException {
this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegisterService()); this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegisterService());
this.registerServiceImplementation(ModuleRegisterService.class, new RedisModuleRegistrationGetService());
} }
@Override public void start(Properties config) throws ServiceNotProvidedException { @Override public void start(Properties config) throws ServiceNotProvidedException {
......
...@@ -22,7 +22,6 @@ import java.util.Properties; ...@@ -22,7 +22,6 @@ import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegisterService; import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegisterService;
import org.skywalking.apm.collector.cluster.standalone.service.StandaloneModuleRegistrationGetService;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ModuleProvider;
import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
...@@ -42,7 +41,6 @@ public class ClusterModuleStandaloneProvider extends ModuleProvider { ...@@ -42,7 +41,6 @@ public class ClusterModuleStandaloneProvider extends ModuleProvider {
@Override public void prepare(Properties config) throws ServiceNotProvidedException { @Override public void prepare(Properties config) throws ServiceNotProvidedException {
this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegisterService()); this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegisterService());
this.registerServiceImplementation(ModuleRegisterService.class, new StandaloneModuleRegistrationGetService());
} }
@Override public void start(Properties config) throws ServiceNotProvidedException { @Override public void start(Properties config) throws ServiceNotProvidedException {
......
...@@ -24,10 +24,8 @@ import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException; ...@@ -24,10 +24,8 @@ import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException;
import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.service.ModuleListenerService; import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleListenerService; import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleListenerService;
import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegisterService; import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegisterService;
import org.skywalking.apm.collector.cluster.zookeeper.service.ZookeeperModuleRegistrationGetService;
import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.CollectorException;
import org.skywalking.apm.collector.core.UnexpectedException; import org.skywalking.apm.collector.core.UnexpectedException;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
...@@ -67,7 +65,6 @@ public class ClusterModuleZookeeperProvider extends ModuleProvider { ...@@ -67,7 +65,6 @@ public class ClusterModuleZookeeperProvider extends ModuleProvider {
this.registerServiceImplementation(ModuleListenerService.class, new ZookeeperModuleListenerService(dataMonitor)); this.registerServiceImplementation(ModuleListenerService.class, new ZookeeperModuleListenerService(dataMonitor));
this.registerServiceImplementation(ModuleRegisterService.class, new ZookeeperModuleRegisterService(dataMonitor)); this.registerServiceImplementation(ModuleRegisterService.class, new ZookeeperModuleRegisterService(dataMonitor));
this.registerServiceImplementation(ModuleRegistrationGetService.class, new ZookeeperModuleRegistrationGetService());
} }
@Override public void start(Properties config) throws ServiceNotProvidedException { @Override public void start(Properties config) throws ServiceNotProvidedException {
......
...@@ -33,7 +33,6 @@ import org.skywalking.apm.collector.client.Client; ...@@ -33,7 +33,6 @@ import org.skywalking.apm.collector.client.Client;
import org.skywalking.apm.collector.client.ClientException; import org.skywalking.apm.collector.client.ClientException;
import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient;
import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException;
import org.skywalking.apm.collector.client.zookeeper.util.PathUtils;
import org.skywalking.apm.collector.cluster.ClusterModuleListener; import org.skywalking.apm.collector.cluster.ClusterModuleListener;
import org.skywalking.apm.collector.cluster.ClusterNodeExistException; import org.skywalking.apm.collector.cluster.ClusterNodeExistException;
import org.skywalking.apm.collector.cluster.DataMonitor; import org.skywalking.apm.collector.cluster.DataMonitor;
...@@ -130,7 +129,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { ...@@ -130,7 +129,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher {
} }
@Override public void addListener(ClusterModuleListener listener) { @Override public void addListener(ClusterModuleListener listener) {
String path = PathUtils.convertKey2Path(listener.path()); String path = BASE_CATALOG + listener.path();
logger.info("listener path: {}", path); logger.info("listener path: {}", path);
listeners.put(path, listener); listeners.put(path, listener);
} }
...@@ -140,7 +139,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { ...@@ -140,7 +139,7 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher {
} }
@Override public ClusterModuleListener getListener(String path) { @Override public ClusterModuleListener getListener(String path) {
path = PathUtils.convertKey2Path(path); path = BASE_CATALOG + path;
return listeners.get(path); return listeners.get(path);
} }
......
/*
* 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.cluster.zookeeper.service;
import java.util.Set;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService;
/**
* @author peng-yongsheng
*/
public class ZookeeperModuleRegistrationGetService implements ModuleRegistrationGetService {
@Override public Set<String> get(String path) {
return null;
}
}
...@@ -22,6 +22,7 @@ import java.net.InetSocketAddress; ...@@ -22,6 +22,7 @@ import java.net.InetSocketAddress;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.servlet.ServletMapping;
import org.skywalking.apm.collector.server.Server; import org.skywalking.apm.collector.server.Server;
import org.skywalking.apm.collector.server.ServerException; import org.skywalking.apm.collector.server.ServerException;
import org.skywalking.apm.collector.server.ServerHandler; import org.skywalking.apm.collector.server.ServerHandler;
...@@ -73,6 +74,9 @@ public class JettyServer implements Server { ...@@ -73,6 +74,9 @@ public class JettyServer implements Server {
@Override public void start() throws ServerException { @Override public void start() throws ServerException {
try { try {
for (ServletMapping servletMapping : servletContextHandler.getServletHandler().getServletMappings()) {
logger.info("jetty servlet mappings: {} register by {}", servletMapping.getPathSpecs(), servletMapping.getServletName());
}
server.start(); server.start();
} catch (Exception e) { } catch (Exception e) {
throw new JettyServerException(e.getMessage(), e); throw new JettyServerException(e.getMessage(), e);
......
...@@ -2,11 +2,11 @@ cluster: ...@@ -2,11 +2,11 @@ cluster:
h2: h2:
hostPort: localhost:2181 hostPort: localhost:2181
sessionTimeout: 100000 sessionTimeout: 100000
#agent_server: naming:
# jetty: jetty:
# host: localhost host: localhost
# port: 10800 port: 10800
# context_path: / context_path: /
#agent_stream: #agent_stream:
# grpc: # grpc:
# host: localhost # host: localhost
......
...@@ -20,19 +20,20 @@ package org.skywalking.apm.collector.naming; ...@@ -20,19 +20,20 @@ package org.skywalking.apm.collector.naming;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.Service; import org.skywalking.apm.collector.core.module.Service;
import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
*/ */
public class NamingModule extends Module { public class NamingModule extends Module {
public static final String NAME = "Naming"; public static final String NAME = "naming";
@Override public String name() { @Override public String name() {
return NAME; return NAME;
} }
@Override public Class<? extends Service>[] services() { @Override public Class<? extends Service>[] services() {
return new Class[0]; return new Class[] {NamingHandlerRegisterService.class};
} }
} }
...@@ -16,14 +16,14 @@ ...@@ -16,14 +16,14 @@
* Project repository: https://github.com/OpenSkywalking/skywalking * Project repository: https://github.com/OpenSkywalking/skywalking
*/ */
package org.skywalking.apm.collector.cluster.service; package org.skywalking.apm.collector.naming.service;
import java.util.Set;
import org.skywalking.apm.collector.core.module.Service; import org.skywalking.apm.collector.core.module.Service;
import org.skywalking.apm.collector.server.ServerHandler;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
*/ */
public interface ModuleRegistrationGetService extends Service { public interface NamingHandlerRegisterService extends Service {
Set<String> get(String path); void register(ServerHandler namingHandler);
} }
...@@ -38,17 +38,7 @@ ...@@ -38,17 +38,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.skywalking</groupId> <groupId>org.skywalking</groupId>
<artifactId>collector-cluster-define</artifactId> <artifactId>collector-jetty-manager-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>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
</dependencies> </dependencies>
......
...@@ -18,20 +18,21 @@ ...@@ -18,20 +18,21 @@
package org.skywalking.apm.collector.naming.jetty; package org.skywalking.apm.collector.naming.jetty;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties; import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleNotFoundException; import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
import org.skywalking.apm.collector.core.module.ModuleProvider; import org.skywalking.apm.collector.core.module.ModuleProvider;
import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
import org.skywalking.apm.collector.jetty.manager.JettyManagerModule;
import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService;
import org.skywalking.apm.collector.naming.NamingModule; import org.skywalking.apm.collector.naming.NamingModule;
import org.skywalking.apm.collector.naming.jetty.handler.AgentGRPCNamingHandler; import org.skywalking.apm.collector.naming.jetty.service.NamingJettyHandlerRegisterService;
import org.skywalking.apm.collector.naming.jetty.handler.AgentJettyNamingHandler; import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
import org.skywalking.apm.collector.naming.jetty.handler.UIJettyNamingHandler;
import org.skywalking.apm.collector.server.Server; import org.skywalking.apm.collector.server.Server;
import org.skywalking.apm.collector.server.manager.ServerManagerModule; import org.skywalking.apm.collector.server.ServerHandler;
import org.skywalking.apm.collector.server.manager.service.JettyServerConfig;
import org.skywalking.apm.collector.server.manager.service.JettyServerManagerService;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
...@@ -41,9 +42,10 @@ public class NamingModuleJettyProvider extends ModuleProvider { ...@@ -41,9 +42,10 @@ public class NamingModuleJettyProvider extends ModuleProvider {
private static final String HOST = "host"; private static final String HOST = "host";
private static final String PORT = "port"; private static final String PORT = "port";
private static final String CONTEXT_PATH = "context_path"; private static final String CONTEXT_PATH = "context_path";
private final List<ServerHandler> handlers = new ArrayList<>();
@Override public String name() { @Override public String name() {
return "Jetty"; return "jetty";
} }
@Override public Class<? extends Module> module() { @Override public Class<? extends Module> module() {
...@@ -51,33 +53,28 @@ public class NamingModuleJettyProvider extends ModuleProvider { ...@@ -51,33 +53,28 @@ public class NamingModuleJettyProvider extends ModuleProvider {
} }
@Override public void prepare(Properties config) throws ServiceNotProvidedException { @Override public void prepare(Properties config) throws ServiceNotProvidedException {
this.registerServiceImplementation(NamingHandlerRegisterService.class, new NamingJettyHandlerRegisterService(handlers));
}
@Override public void start(Properties config) throws ServiceNotProvidedException {
String host = config.getProperty(HOST); String host = config.getProperty(HOST);
String port = config.getProperty(PORT); Integer port = (Integer)config.get(PORT);
String contextPath = config.getProperty(CONTEXT_PATH); String contextPath = config.getProperty(CONTEXT_PATH);
JettyServerConfig serverConfig = new JettyServerConfig(host, Integer.valueOf(port), contextPath);
try { try {
JettyServerManagerService managerService = getManager().find(ServerManagerModule.NAME).getService(JettyServerManagerService.class); JettyManagerService managerService = getManager().find(JettyManagerModule.NAME).getService(JettyManagerService.class);
Server jettyServer = managerService.getElseCreateServer(serverConfig); Server jettyServer = managerService.getElseCreateServer(host, port, contextPath);
jettyServer.addHandler(new AgentGRPCNamingHandler()); handlers.forEach(jettyServer::addHandler);
jettyServer.addHandler(new AgentJettyNamingHandler());
jettyServer.addHandler(new UIJettyNamingHandler());
// ModuleRegistrationGetService registrationGetService = getManager().find(ClusterModule.NAME).getService(ModuleRegistrationGetService.class);
} catch (ModuleNotFoundException e) { } catch (ModuleNotFoundException e) {
throw new ServiceNotProvidedException(e.getMessage()); throw new ServiceNotProvidedException(e.getMessage());
} }
} }
@Override public void start(Properties config) throws ServiceNotProvidedException {
}
@Override public void notifyAfterCompleted() throws ServiceNotProvidedException { @Override public void notifyAfterCompleted() throws ServiceNotProvidedException {
} }
@Override public String[] requiredModules() { @Override public String[] requiredModules() {
return new String[] {ServerManagerModule.NAME, ClusterModule.NAME}; return new String[] {JettyManagerModule.NAME, ClusterModule.NAME};
} }
} }
/*
* 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.naming.jetty.handler;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
/**
* @author peng-yongsheng
*/
public class AgentGRPCNamingHandler extends JettyHandler {
@Override public String pathSpec() {
return "/agentstream/grpc";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
// ModuleManager
// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
// Set<String> servers = reader.read(AgentStreamGRPCDataListener.PATH);
JsonArray serverArray = new JsonArray();
// servers.forEach(serverArray::add);
return serverArray;
}
@Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
throw new UnsupportedOperationException();
}
}
/*
* 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.naming.jetty.handler;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler;
/**
* @author peng-yongsheng
*/
public class AgentJettyNamingHandler extends JettyHandler {
@Override public String pathSpec() {
return "/agentstream/jetty";
}
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader();
// Set<String> servers = reader.read(AgentStreamJettyDataListener.PATH);
JsonArray serverArray = new JsonArray();
// servers.forEach(serverArray::add);
return serverArray;
}
@Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException {
throw new UnsupportedOperationException();
}
}
...@@ -16,17 +16,24 @@ ...@@ -16,17 +16,24 @@
* Project repository: https://github.com/OpenSkywalking/skywalking * Project repository: https://github.com/OpenSkywalking/skywalking
*/ */
package org.skywalking.apm.collector.cluster.standalone.service; package org.skywalking.apm.collector.naming.jetty.service;
import java.util.Set; import java.util.List;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService; import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
import org.skywalking.apm.collector.server.ServerHandler;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
*/ */
public class StandaloneModuleRegistrationGetService implements ModuleRegistrationGetService { public class NamingJettyHandlerRegisterService implements NamingHandlerRegisterService {
@Override public Set<String> get(String path) { private final List<ServerHandler> handlers;
return null;
public NamingJettyHandlerRegisterService(List<ServerHandler> handlers) {
this.handlers = handlers;
}
@Override public void register(ServerHandler namingHandler) {
handlers.add(namingHandler);
} }
} }
...@@ -22,5 +22,15 @@ ...@@ -22,5 +22,15 @@
<artifactId>apm-collector-core</artifactId> <artifactId>apm-collector-core</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-cluster-define</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>server-component</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -46,5 +46,10 @@ ...@@ -46,5 +46,10 @@
<artifactId>collector-jetty-manager-define</artifactId> <artifactId>collector-jetty-manager-define</artifactId>
<version>${project.version}</version> <version>${project.version}</version>
</dependency> </dependency>
<dependency>
<groupId>org.skywalking</groupId>
<artifactId>collector-naming-define</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
...@@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty; ...@@ -20,6 +20,7 @@ package org.skywalking.apm.collector.ui.jetty;
import java.util.Properties; import java.util.Properties;
import org.skywalking.apm.collector.cluster.ClusterModule; import org.skywalking.apm.collector.cluster.ClusterModule;
import org.skywalking.apm.collector.cluster.service.ModuleListenerService;
import org.skywalking.apm.collector.cluster.service.ModuleRegisterService; import org.skywalking.apm.collector.cluster.service.ModuleRegisterService;
import org.skywalking.apm.collector.core.module.Module; import org.skywalking.apm.collector.core.module.Module;
import org.skywalking.apm.collector.core.module.ModuleNotFoundException; import org.skywalking.apm.collector.core.module.ModuleNotFoundException;
...@@ -27,21 +28,26 @@ import org.skywalking.apm.collector.core.module.ModuleProvider; ...@@ -27,21 +28,26 @@ import org.skywalking.apm.collector.core.module.ModuleProvider;
import org.skywalking.apm.collector.core.module.ServiceNotProvidedException; import org.skywalking.apm.collector.core.module.ServiceNotProvidedException;
import org.skywalking.apm.collector.jetty.manager.JettyManagerModule; import org.skywalking.apm.collector.jetty.manager.JettyManagerModule;
import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService; import org.skywalking.apm.collector.jetty.manager.service.JettyManagerService;
import org.skywalking.apm.collector.naming.NamingModule;
import org.skywalking.apm.collector.naming.service.NamingHandlerRegisterService;
import org.skywalking.apm.collector.server.Server; import org.skywalking.apm.collector.server.Server;
import org.skywalking.apm.collector.ui.UIModule; import org.skywalking.apm.collector.ui.UIModule;
import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler; import org.skywalking.apm.collector.ui.jetty.handler.application.ApplicationsGetHandler;
import org.skywalking.apm.collector.ui.jetty.handler.naming.UIJettyNamingHandler;
import org.skywalking.apm.collector.ui.jetty.handler.naming.UIJettyNamingListener;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
*/ */
public class UIModuleJettyProvider extends ModuleProvider { public class UIModuleJettyProvider extends ModuleProvider {
public static final String NAME = "jetty";
private static final String HOST = "host"; private static final String HOST = "host";
private static final String PORT = "port"; private static final String PORT = "port";
private static final String CONTEXT_PATH = "context_path"; private static final String CONTEXT_PATH = "context_path";
@Override public String name() { @Override public String name() {
return "jetty"; return NAME;
} }
@Override public Class<? extends Module> module() { @Override public Class<? extends Module> module() {
...@@ -62,6 +68,13 @@ public class UIModuleJettyProvider extends ModuleProvider { ...@@ -62,6 +68,13 @@ public class UIModuleJettyProvider extends ModuleProvider {
ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class); ModuleRegisterService moduleRegisterService = getManager().find(ClusterModule.NAME).getService(ModuleRegisterService.class);
moduleRegisterService.register(UIModule.NAME, this.name(), new UIModuleRegistration(host, port, contextPath)); moduleRegisterService.register(UIModule.NAME, this.name(), new UIModuleRegistration(host, port, contextPath));
UIJettyNamingListener namingListener = new UIJettyNamingListener();
ModuleListenerService moduleListenerService = getManager().find(ClusterModule.NAME).getService(ModuleListenerService.class);
moduleListenerService.addListener(namingListener);
NamingHandlerRegisterService namingHandlerRegisterService = getManager().find(NamingModule.NAME).getService(NamingHandlerRegisterService.class);
namingHandlerRegisterService.register(new UIJettyNamingHandler(namingListener));
} catch (ModuleNotFoundException e) { } catch (ModuleNotFoundException e) {
throw new ServiceNotProvidedException(e.getMessage()); throw new ServiceNotProvidedException(e.getMessage());
} }
...@@ -72,6 +85,6 @@ public class UIModuleJettyProvider extends ModuleProvider { ...@@ -72,6 +85,6 @@ public class UIModuleJettyProvider extends ModuleProvider {
} }
@Override public String[] requiredModules() { @Override public String[] requiredModules() {
return new String[] {ClusterModule.NAME, JettyManagerModule.NAME}; return new String[] {ClusterModule.NAME, JettyManagerModule.NAME, NamingModule.NAME};
} }
} }
...@@ -16,10 +16,11 @@ ...@@ -16,10 +16,11 @@
* Project repository: https://github.com/OpenSkywalking/skywalking * Project repository: https://github.com/OpenSkywalking/skywalking
*/ */
package org.skywalking.apm.collector.naming.jetty.handler; package org.skywalking.apm.collector.ui.jetty.handler.naming;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import java.util.Set;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException;
import org.skywalking.apm.collector.server.jetty.JettyHandler; import org.skywalking.apm.collector.server.jetty.JettyHandler;
...@@ -29,15 +30,20 @@ import org.skywalking.apm.collector.server.jetty.JettyHandler; ...@@ -29,15 +30,20 @@ import org.skywalking.apm.collector.server.jetty.JettyHandler;
*/ */
public class UIJettyNamingHandler extends JettyHandler { public class UIJettyNamingHandler extends JettyHandler {
private final UIJettyNamingListener namingListener;
public UIJettyNamingHandler(UIJettyNamingListener namingListener) {
this.namingListener = namingListener;
}
@Override public String pathSpec() { @Override public String pathSpec() {
return "/ui/jetty"; return "/ui/jetty";
} }
@Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException {
// ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); Set<String> servers = namingListener.getAddresses();
// Set<String> servers = reader.read(UIJettyDataListener.PATH);
JsonArray serverArray = new JsonArray(); JsonArray serverArray = new JsonArray();
// servers.forEach(serverArray::add); servers.forEach(serverArray::add);
return serverArray; return serverArray;
} }
......
...@@ -16,17 +16,28 @@ ...@@ -16,17 +16,28 @@
* Project repository: https://github.com/OpenSkywalking/skywalking * Project repository: https://github.com/OpenSkywalking/skywalking
*/ */
package org.skywalking.apm.collector.cluster.redis.service; package org.skywalking.apm.collector.ui.jetty.handler.naming;
import java.util.Set; import org.skywalking.apm.collector.cluster.ClusterModuleListener;
import org.skywalking.apm.collector.cluster.service.ModuleRegistrationGetService; import org.skywalking.apm.collector.ui.UIModule;
import org.skywalking.apm.collector.ui.jetty.UIModuleJettyProvider;
/** /**
* @author peng-yongsheng * @author peng-yongsheng
*/ */
public class RedisModuleRegistrationGetService implements ModuleRegistrationGetService { public class UIJettyNamingListener extends ClusterModuleListener {
public static final String PATH = "/" + UIModule.NAME + "/" + UIModuleJettyProvider.NAME;
@Override public String path() {
return PATH;
}
@Override public void serverJoinNotify(String serverAddress) {
}
@Override public void serverQuitNotify(String serverAddress) {
@Override public Set<String> get(String path) {
return null;
} }
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册