use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class ServersPageHandler method handle.
public Page handle(URL url) {
List<List<String>> rows = new ArrayList<List<String>>();
Collection<ExchangeServer> servers = DubboProtocol.getDubboProtocol().getServers();
int clientCount = 0;
if (servers != null && servers.size() > 0) {
for (ExchangeServer s : servers) {
List<String> row = new ArrayList<String>();
String address = s.getUrl().getAddress();
row.add(NetUtils.getHostName(address) + "/" + address);
int clientSize = s.getExchangeChannels().size();
clientCount += clientSize;
row.add("<a href=\"clients.html?port=" + s.getUrl().getPort() + "\">Clients(" + clientSize + ")</a>");
rows.add(row);
}
}
return new Page("Servers", "Servers (" + rows.size() + ")", new String[] { "Server Address:", "Clients(" + clientCount + ")" }, rows);
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class HostsPageHandler method handle.
public Page handle(URL url) {
List<List<String>> rows = new ArrayList<List<String>>();
Set<String> hosts = RegistryContainer.getInstance().getHosts();
int providersCount = 0;
int consumersCount = 0;
if (hosts != null && hosts.size() > 0) {
for (String host : hosts) {
List<String> row = new ArrayList<String>();
row.add(NetUtils.getHostName(host) + "/" + host);
List<URL> providers = RegistryContainer.getInstance().getProvidersByHost(host);
List<URL> consumers = RegistryContainer.getInstance().getConsumersByHost(host);
if (providers != null && providers.size() > 0 || consumers != null && consumers.size() > 0) {
URL provider = (providers != null && providers.size() > 0 ? providers.iterator().next() : consumers.iterator().next());
row.add(provider.getParameter(Constants.APPLICATION_KEY, ""));
row.add(provider.getParameter("owner", "") + (provider.hasParameter("organization") ? " (" + provider.getParameter("organization") + ")" : ""));
} else {
row.add("");
row.add("");
}
int proviedSize = providers == null ? 0 : providers.size();
providersCount += proviedSize;
row.add(proviedSize == 0 ? "<font color=\"blue\">No provider</font>" : "<a href=\"providers.html?host=" + host + "\">Providers(" + proviedSize + ")</a>");
int consumersSize = consumers == null ? 0 : consumers.size();
consumersCount += consumersSize;
row.add(consumersSize == 0 ? "<font color=\"blue\">No consumer</font>" : "<a href=\"consumers.html?host=" + host + "\">Consumers(" + consumersSize + ")</a>");
rows.add(row);
}
}
return new Page("Hosts", "Hosts (" + rows.size() + ")", new String[] { "Host Name/IP:", "Application", "Owner", "Providers(" + providersCount + ")", "Consumers(" + consumersCount + ")" }, rows);
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class ProvidersPageHandler method handle.
public Page handle(URL url) {
String service = url.getParameter("service");
String host = url.getParameter("host");
String application = url.getParameter("application");
if (service != null && service.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> providers = RegistryContainer.getInstance().getProvidersByService(service);
if (providers != null && providers.size() > 0) {
for (URL u : providers) {
List<String> row = new ArrayList<String>();
String s = u.toFullString();
row.add(s.replace("&", "&"));
row.add("<button onclick=\"if(confirm('Confirm unregister provider?')){window.location.href='unregister.html?service=" + service + "&provider=" + URL.encode(s) + "';}\">Unregister</button>");
rows.add(row);
}
}
return new Page("<a href=\"services.html\">Services</a> > " + service + " > Providers | <a href=\"consumers.html?service=" + service + "\">Consumers</a> | <a href=\"statistics.html?service=" + service + "\">Statistics</a> | <a href=\"charts.html?service=" + service + "\">Charts</a>", "Providers (" + rows.size() + ")", new String[] { "Provider URL:", "Unregister" }, rows);
} else if (host != null && host.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> providers = RegistryContainer.getInstance().getProvidersByHost(host);
if (providers != null && providers.size() > 0) {
for (URL u : providers) {
List<String> row = new ArrayList<String>();
String s = u.toFullString();
row.add(s.replace("&", "&"));
row.add("<button onclick=\"if(confirm('Confirm unregister provider?')){window.location.href='unregister.html?host=" + host + "&provider=" + URL.encode(s) + "';}\">Unregister</button>");
rows.add(row);
}
}
return new Page("<a href=\"hosts.html\">Hosts</a> > " + NetUtils.getHostName(host) + "/" + host + " > Providers | <a href=\"consumers.html?host=" + host + "\">Consumers</a>", "Providers (" + rows.size() + ")", new String[] { "Provider URL:", "Unregister" }, rows);
} else if (application != null && application.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> providers = RegistryContainer.getInstance().getProvidersByApplication(application);
if (providers != null && providers.size() > 0) {
for (URL u : providers) {
List<String> row = new ArrayList<String>();
String s = u.toFullString();
row.add(s.replace("&", "&"));
row.add("<button onclick=\"if(confirm('Confirm unregister provider?')){window.location.href='unregister.html?application=" + application + "&provider=" + URL.encode(s) + "';}\">Unregister</button>");
rows.add(row);
}
}
return new Page("<a href=\"applications.html\">Applications</a> > " + application + " > Providers | <a href=\"consumers.html?application=" + application + "\">Consumers</a> | <a href=\"dependencies.html?application=" + application + "\">Depends On</a> | <a href=\"dependencies.html?application=" + application + "&reverse=true\">Used By</a>", "Providers (" + rows.size() + ")", new String[] { "Provider URL:", "Unregister" }, rows);
} else {
throw new IllegalArgumentException("Please input service or host or application parameter.");
}
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class StatisticsPageHandler method handle.
public Page handle(URL url) {
String service = url.getParameter("service");
if (service == null || service.length() == 0) {
throw new IllegalArgumentException("Please input service parameter.");
}
String date = url.getParameter("date");
if (date == null || date.length() == 0) {
date = new SimpleDateFormat("yyyyMMdd").format(new Date());
}
String expand = url.getParameter("expand");
List<List<String>> rows = new ArrayList<List<String>>();
String directory = SimpleMonitorService.getInstance().getStatisticsDirectory();
String filename = directory + "/" + date + "/" + service;
File serviceDir = new File(filename);
if (serviceDir.exists()) {
File[] methodDirs = serviceDir.listFiles();
for (File methodDir : methodDirs) {
long[] statistics = newStatistics();
Map<String, long[]> expandMap = new HashMap<String, long[]>();
File[] consumerDirs = methodDir.listFiles();
for (File consumerDir : consumerDirs) {
long[] expandStatistics = null;
if (MonitorService.CONSUMER.equals(expand)) {
expandStatistics = newStatistics();
expandMap.put(consumerDir.getName(), expandStatistics);
}
File[] providerDirs = consumerDir.listFiles();
for (File providerDir : providerDirs) {
if (MonitorService.PROVIDER.equals(expand)) {
expandStatistics = newStatistics();
expandMap.put(providerDir.getName(), expandStatistics);
}
appendStatistics(providerDir, statistics);
if (expandStatistics != null) {
appendStatistics(providerDir, expandStatistics);
}
}
}
rows.add(toRow(methodDir.getName(), statistics));
if (expandMap != null && expandMap.size() > 0) {
for (Map.Entry<String, long[]> entry : expandMap.entrySet()) {
String node = MonitorService.CONSUMER.equals(expand) ? "<--" : "-->";
rows.add(toRow(" |" + node + " " + entry.getKey(), entry.getValue()));
}
}
}
}
StringBuilder nav = new StringBuilder();
nav.append("<a href=\"services.html\">Services</a> > ");
nav.append(service);
nav.append(" > <a href=\"providers.html?service=");
nav.append(service);
nav.append("\">Providers</a> | <a href=\"consumers.html?service=");
nav.append(service);
nav.append("\">Consumers</a> | Statistics | <a href=\"charts.html?service=");
nav.append(service);
nav.append("&date=");
nav.append(date);
nav.append("\">Charts</a> > <input type=\"text\" style=\"width: 65px;\" name=\"date\" value=\"");
nav.append(date);
nav.append("\" onkeyup=\"if (event.keyCode == 10 || event.keyCode == 13) {window.location.href='statistics.html?service=");
nav.append(service);
if (expand != null && expand.length() > 0) {
nav.append("&expand=");
nav.append(expand);
}
nav.append("&date=' + this.value;}\" /> > ");
if (!MonitorService.PROVIDER.equals(expand) && !MonitorService.CONSUMER.equals(expand)) {
nav.append("Summary");
} else {
nav.append("<a href=\"statistics.html?service=");
nav.append(service);
nav.append("&date=");
nav.append(date);
nav.append("\">Summary</a>");
}
if (MonitorService.PROVIDER.equals(expand)) {
nav.append(" | +Provider");
} else {
nav.append(" | <a href=\"statistics.html?service=");
nav.append(service);
nav.append("&date=");
nav.append(date);
nav.append("&expand=provider\">+Provider</a>");
}
if (MonitorService.CONSUMER.equals(expand)) {
nav.append(" | +Consumer");
} else {
nav.append(" | <a href=\"statistics.html?service=");
nav.append(service);
nav.append("&date=");
nav.append(date);
nav.append("&expand=consumer\">+Consumer</a>");
}
return new Page(nav.toString(), "Statistics (" + rows.size() + ")", new String[] { "Method:", "Success", "Failure", "Avg Elapsed (ms)", "Max Elapsed (ms)", "Max Concurrent" }, rows);
}
use of com.alibaba.dubbo.container.page.Page in project dubbo by alibaba.
the class UnregisterPageHandler method handle.
public Page handle(URL url) {
String provider = url.getParameterAndDecoded("provider");
if (provider == null || provider.length() == 0) {
throw new IllegalArgumentException("Please input provider parameter.");
}
URL providerUrl = URL.valueOf(provider);
RegistryContainer.getInstance().getRegistry().unregister(providerUrl);
String parameter;
if (url.hasParameter("service")) {
parameter = "service=" + url.getParameter("service");
} else if (url.hasParameter("host")) {
parameter = "host=" + url.getParameter("host");
} else if (url.hasParameter("application")) {
parameter = "application=" + url.getParameter("application");
} else {
parameter = "service=" + providerUrl.getServiceInterface();
}
return new Page("<script type=\"text/javascript\">window.location.href=\"providers.html?" + parameter + "\";</script>");
}
Aggregations