提交 ff41faec 编写于 作者: W william.liangf

DUBBO-91 修改页面

git-svn-id: http://code.alibabatech.com/svn/dubbo/trunk@600 1a56cb94-b969-4eaa-88fa-be21384802f2
上级 95551710
......@@ -30,7 +30,7 @@ import com.alibaba.dubbo.container.page.PageServlet;
*
* @author william.liangf
*/
@Menu(name = "Home", desc = "Home", order = Integer.MIN_VALUE)
@Menu(name = "Home", desc = "Home page.", order = Integer.MIN_VALUE)
@Extension("index")
public class HomePageHandler implements PageHandler {
......
......@@ -42,7 +42,7 @@ import com.alibaba.dubbo.container.page.PageHandler;
*
* @author william.liangf
*/
@Menu(name = "Log", desc = "Log", order = Integer.MAX_VALUE - 11000)
@Menu(name = "Log", desc = "Show system log.", order = Integer.MAX_VALUE - 11000)
@Extension("log")
public class LogPageHandler implements PageHandler {
......
......@@ -36,7 +36,7 @@ import com.alibaba.dubbo.container.page.PageHandler;
*
* @author william.liangf
*/
@Menu(name = "Status", desc = "Status", order = Integer.MAX_VALUE - 12000)
@Menu(name = "Status", desc = "Show system status.", order = Integer.MAX_VALUE - 12000)
@Extension("status")
public class StatusPageHandler implements PageHandler {
......
......@@ -35,7 +35,7 @@ import com.alibaba.dubbo.container.page.PageHandler;
*
* @author william.liangf
*/
@Menu(name = "System", desc = "System", order = Integer.MAX_VALUE - 10000)
@Menu(name = "System", desc = "Show system environment information.", order = Integer.MAX_VALUE - 10000)
@Extension("system")
public class SystemPageHandler implements PageHandler {
......
......@@ -64,12 +64,12 @@ public class RegistryContainer implements Container {
private final Set<String> services = new ConcurrentHashSet<String>();
private final Map<String, List<URL>> providers = new ConcurrentHashMap<String, List<URL>>();
private final Map<String, List<URL>> serviceProviders = new ConcurrentHashMap<String, List<URL>>();
private final Map<String, List<URL>> consumers = new ConcurrentHashMap<String, List<URL>>();
private final Map<String, List<URL>> serviceConsumers = new ConcurrentHashMap<String, List<URL>>();
private final Map<String, List<URL>> serviceRoutes = new ConcurrentHashMap<String, List<URL>>();
private final Map<String, List<URL>> routes = new ConcurrentHashMap<String, List<URL>>();
private Registry registry;
private static RegistryContainer INSTANCE = null;
......@@ -93,66 +93,133 @@ public class RegistryContainer implements Container {
return Collections.unmodifiableSet(applications);
}
public Set<String> getDependencies(String application, boolean afferent) {
return afferent ? getAfferentDependencies(application) : getEfferentDependencies(application);
public Set<String> getDependencies(String application, boolean reverse) {
if (reverse) {
Set<String> dependencies = new HashSet<String>();
Set<String> services = providerApplicationServices.get(application);
if (services != null && services.size() > 0) {
for (String service : services) {
Set<String> applications = consumerServiceApplications.get(service);
if (applications != null && applications.size() > 0) {
dependencies.addAll(applications);
}
}
}
return dependencies;
} else {
Set<String> dependencies = new HashSet<String>();
Set<String> services = consumerApplicationServices.get(application);
if (services != null && services.size() > 0) {
for (String service : services) {
Set<String> applications = providerServiceApplications.get(service);
if (applications != null && applications.size() > 0) {
dependencies.addAll(applications);
}
}
}
return dependencies;
}
}
public Set<String> getServices() {
return Collections.unmodifiableSet(services);
}
public Map<String, List<URL>> getServiceProviders() {
return Collections.unmodifiableMap(serviceProviders);
}
public List<URL> getProvidersByService(String service) {
List<URL> urls = serviceProviders.get(service);
return urls == null ? null : Collections.unmodifiableList(urls);
}
public Set<String> getAfferentDependencies(String application) {
Set<String> dependencies = new HashSet<String>();
Set<String> services = providerApplicationServices.get(application);
if (services != null && services.size() > 0) {
for (String service : services) {
Set<String> applications = consumerServiceApplications.get(service);
if (applications != null && applications.size() > 0) {
dependencies.addAll(applications);
public List<URL> getProvidersByHost(String host) {
List<URL> urls = new ArrayList<URL>();
if (host != null && host.length() > 0) {
for (List<URL> providers : serviceProviders.values()) {
for (URL url : providers) {
if (host.equals(url.getHost())) {
urls.add(url);
}
}
}
}
return dependencies;
return urls;
}
public Set<String> getEfferentDependencies(String application) {
Set<String> dependencies = new HashSet<String>();
Set<String> services = consumerApplicationServices.get(application);
if (services != null && services.size() > 0) {
for (String service : services) {
Set<String> applications = providerServiceApplications.get(service);
if (applications != null && applications.size() > 0) {
dependencies.addAll(applications);
public List<URL> getProvidersByApplication(String application) {
List<URL> urls = new ArrayList<URL>();
if (application != null && application.length() > 0) {
for (List<URL> providers : serviceProviders.values()) {
for (URL url : providers) {
if (application.equals(url.getParameter(Constants.APPLICATION_KEY))) {
urls.add(url);
}
}
}
}
return dependencies;
return urls;
}
public Set<String> getServices() {
return Collections.unmodifiableSet(services);
public Set<String> getHosts() {
Set<String> addresses = new HashSet<String>();
for (List<URL> providers : serviceProviders.values()) {
for (URL url : providers) {
addresses.add(url.getHost());
}
}
for (List<URL> providers : serviceConsumers.values()) {
for (URL url : providers) {
addresses.add(url.getHost());
}
}
return addresses;
}
public Map<String, List<URL>> getProviders() {
return Collections.unmodifiableMap(providers);
public Map<String, List<URL>> getServiceConsumers() {
return Collections.unmodifiableMap(serviceConsumers);
}
public List<URL> getProviders(String service) {
List<URL> urls = providers.get(service);
public List<URL> getConsumersByService(String service) {
List<URL> urls = serviceConsumers.get(service);
return urls == null ? null : Collections.unmodifiableList(urls);
}
public Map<String, List<URL>> getConsumers() {
return Collections.unmodifiableMap(consumers);
public List<URL> getConsumersByHost(String host) {
List<URL> urls = new ArrayList<URL>();
if (host != null && host.length() > 0) {
for (List<URL> consumers : serviceConsumers.values()) {
for (URL url : consumers) {
if (host.equals(url.getHost())) {
urls.add(url);
}
}
}
}
return Collections.unmodifiableList(urls);
}
public List<URL> getConsumers(String service) {
List<URL> urls = consumers.get(service);
return urls == null ? null : Collections.unmodifiableList(urls);
public List<URL> getConsumersByApplication(String application) {
List<URL> urls = new ArrayList<URL>();
if (application != null && application.length() > 0) {
for (List<URL> consumers : serviceConsumers.values()) {
for (URL url : consumers) {
if (application.equals(url.getParameter(Constants.APPLICATION_KEY))) {
urls.add(url);
}
}
}
}
return urls;
}
public Map<String, List<URL>> getRoutes() {
return Collections.unmodifiableMap(routes);
public Map<String, List<URL>> getServiceRoutes() {
return Collections.unmodifiableMap(serviceRoutes);
}
public List<URL> getRoutes(String service) {
List<URL> urls = routes.get(service);
public List<URL> getRoutesByService(String service) {
List<URL> urls = serviceRoutes.get(service);
return urls == null ? null : Collections.unmodifiableList(urls);
}
......@@ -241,23 +308,23 @@ public class RegistryContainer implements Container {
}
}
if (proivderMap != null && proivderMap.size() > 0) {
providers.putAll(proivderMap);
serviceProviders.putAll(proivderMap);
}
if (consumerMap != null && consumerMap.size() > 0) {
consumers.putAll(consumerMap);
serviceConsumers.putAll(consumerMap);
}
if (routeMap != null && routeMap.size() > 0) {
routes.putAll(routeMap);
serviceRoutes.putAll(routeMap);
}
for (String service : notifiedServices) {
if (! proivderMap.containsKey(service)) {
providers.remove(service);
serviceProviders.remove(service);
}
if (! consumerMap.containsKey(service)) {
consumers.remove(service);
serviceConsumers.remove(service);
}
if (! routeMap.containsKey(service)) {
routes.remove(service);
serviceRoutes.remove(service);
}
}
}
......
......@@ -31,32 +31,55 @@ import com.alibaba.dubbo.monitor.simple.RegistryContainer;
*
* @author william.liangf
*/
@Menu(name = "Applications", desc = "Applications", order = 2000)
@Menu(name = "Applications", desc = "Show application dependencies.", order = 1000)
@Extension("applications")
public class ApplicationsPageHandler implements PageHandler {
public Page handle(URL url) {
Set<String> applications = RegistryContainer.getInstance().getApplications();
List<List<String>> rows = new ArrayList<List<String>>();
int providersCount = 0;
int consumersCount = 0;
int efferentCount = 0;
int afferentCount = 0;
if (applications != null && applications.size() > 0) {
for (String application : applications) {
List<String> row = new ArrayList<String>();
row.add(application);
Set<String> efferents = RegistryContainer.getInstance().getEfferentDependencies(application);
List<URL> providers = RegistryContainer.getInstance().getProvidersByApplication(application);
List<URL> consumers = RegistryContainer.getInstance().getConsumersByApplication(application);
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("owner", "") + (provider.hasParameter("organization") ? " (" + provider.getParameter("organization") + ")" : ""));
} else {
row.add("");
}
int providersSize = providers == null ? 0 : providers.size();
providersCount += providersSize;
row.add(providersSize == 0 ? "<font color=\"blue\">No provider</font>" : "<a href=\"providers.html?application=" + application + "\">Providers(" + providersSize + ")</a>");
int consumersSize = consumers == null ? 0 : consumers.size();
consumersCount += consumersSize;
row.add(consumersSize == 0 ? "<font color=\"blue\">No consumer</font>" : "<a href=\"consumers.html?application=" + application + "\">Consumers(" + consumersSize + ")</a>");
Set<String> efferents = RegistryContainer.getInstance().getDependencies(application, false);
int efferentSize = efferents == null ? 0 : efferents.size();
efferentCount += efferentSize;
row.add(efferentSize == 0 ? "<font color=\"blue\">No Efferent Dependencies</font>" : "<a href=\"dependencies.html?direction=efferent&application=" + application + "\">Efferent Dependencies(" + efferentSize + ")</a>");
Set<String> afferents = RegistryContainer.getInstance().getAfferentDependencies(application);
row.add(efferentSize == 0 ? "<font color=\"blue\">No depends</font>" : "<a href=\"dependencies.html?application=" + application + "\">Depend On(" + efferentSize + ")</a>");
Set<String> afferents = RegistryContainer.getInstance().getDependencies(application, true);
int afferentSize = afferents == null ? 0 : afferents.size();
afferentCount += afferentSize;
row.add(afferentSize == 0 ? "<font color=\"blue\">No Afferent Dependencies</font>" : "<a href=\"dependencies.html?direction=afferent&application=" + application + "\">Afferent Dependencies(" + afferentSize + ")</a>");
row.add(afferentSize == 0 ? "<font color=\"blue\">No used</font>" : "<a href=\"dependencies.html?reverse=true&application=" + application + "\">Used By(" + afferentSize + ")</a>");
rows.add(row);
}
}
return new Page("Apploications", "Apploications (" + rows.size() + ")",
new String[] { "Application Name:", "Efferent Dependencies(" + efferentCount + ")", "Afferent Dependencies(" + afferentCount + ")" }, rows);
return new Page("Applications", "Applications (" + rows.size() + ")",
new String[] { "Application Name:", "Owner", "Providers(" + providersCount + ")", "Consumers(" + consumersCount + ")", "Depend On(" + efferentCount + ")", "Used By(" + afferentCount + ")" }, rows);
}
}
......@@ -20,6 +20,7 @@ import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
import com.alibaba.dubbo.monitor.simple.RegistryContainer;
......@@ -34,24 +35,51 @@ public class ConsumersPageHandler implements PageHandler {
public Page handle(URL url) {
String service = url.getParameter("service");
if (service == null || service.length() == 0) {
throw new IllegalArgumentException("Please input service parameter.");
}
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> consumers = RegistryContainer.getInstance().getConsumers(service);
if (consumers != null && consumers.size() > 0) {
for (URL consumer : consumers) {
List<String> row = new ArrayList<String>();
row.add(consumer.toFullString().replace("&", "&amp;"));
rows.add(row);
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> consumers = RegistryContainer.getInstance().getConsumersByService(service);
if (consumers != null && consumers.size() > 0) {
for (URL u : consumers) {
List<String> row = new ArrayList<String>();
row.add(u.toFullString().replace("&", "&amp;"));
rows.add(row);
}
}
return new Page("<a href=\"services.html\">Services</a> &gt; " + service
+ " &gt; <a href=\"providers.html?service=" + service
+ "\">Providers</a> | Consumers | <a href=\"statistics.html?service=" + service
+ "\">Statistics</a> | <a href=\"charts.html?service=" + service
+ "\">Charts</a>", "Consumers (" + rows.size() + ")",
new String[] { "Consumer URL:" }, rows);
} else if (host != null && host.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> consumers = RegistryContainer.getInstance().getConsumersByHost(host);
if (consumers != null && consumers.size() > 0) {
for (URL u : consumers) {
List<String> row = new ArrayList<String>();
row.add(u.toFullString().replace("&", "&amp;"));
rows.add(row);
}
}
return new Page("<a href=\"hosts.html\">Hosts</a> &gt; " + NetUtils.getHostName(host) + "/" + host + " &gt; <a href=\"providers.html?host=" + host + "\">Providers</a> | Consumers", "Consumers (" + rows.size() + ")",
new String[] { "Consumer URL:" }, rows);
} else if (application != null && application.length() > 0) {
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> consumers = RegistryContainer.getInstance().getConsumersByApplication(application);
if (consumers != null && consumers.size() > 0) {
for (URL u : consumers) {
List<String> row = new ArrayList<String>();
row.add(u.toFullString().replace("&", "&amp;"));
rows.add(row);
}
}
return new Page("<a href=\"applications.html\">Applications</a> &gt; " + application + " &gt; <a href=\"providers.html?application=" + application + "\">Providers</a> | Consumers", "Consumers (" + rows.size() + ")",
new String[] { "Consumer URL:" }, rows);
} else {
throw new IllegalArgumentException("Please input service or host or application parameter.");
}
return new Page("<a href=\"services.html\">Services</a> &gt; " + service
+ " &gt; <a href=\"providers.html?service=" + service
+ "\">Providers</a> | Consumers | <a href=\"statistics.html?service=" + service
+ "\">Statistics</a> | <a href=\"charts.html?service=" + service
+ "\">Charts</a>", "Consumers (" + rows.size() + ")",
new String[] { "Consumer URL:" }, rows);
}
}
......@@ -39,22 +39,22 @@ public class DependenciesPageHandler implements PageHandler {
if (application == null || application.length() == 0) {
throw new IllegalArgumentException("Please input application parameter.");
}
boolean afferent = "afferent".equals(url.getParameter("direction"));
boolean reverse = url.getParameter("reverse", false);
List<List<String>> rows = new ArrayList<List<String>>();
appendDependency(rows, afferent, application, 0, new HashSet<String>());
appendDependency(rows, reverse, application, 0, new HashSet<String>());
return new Page("<a href=\"applications.html\">Applications</a> &gt; " + application +
(afferent ? " &gt; <a href=\"dependencies.html?direction=efferent&application=" + application + "\">Efferent Dependencies</a> | Afferent Dependencies"
: " &gt; Efferent Dependencies | <a href=\"dependencies.html?direction=afferent&application=" + application + "\">Afferent Dependencies</a>"), (afferent ? "Afferent Dependencies" : "Efferent Dependencies") + " (" + rows.size() + ")", new String[] { "Application Name:"}, rows);
(reverse ? " &gt; <a href=\"dependencies.html?application=" + application + "\">Depend On</a> | Used By"
: " &gt; Depend On | <a href=\"dependencies.html?reverse=true&application=" + application + "\">Used By</a>"), (reverse ? "Used By" : "Depend On") + " (" + rows.size() + ")", new String[] { "Application Name:"}, rows);
}
private void appendDependency(List<List<String>> rows, boolean afferent, String application, int level, Set<String> appended) {
private void appendDependency(List<List<String>> rows, boolean reverse, String application, int level, Set<String> appended) {
List<String> row = new ArrayList<String>();
StringBuilder buf = new StringBuilder();
if (level > 0) {
for (int i = 0; i < level; i ++) {
buf.append("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|");
}
buf.append(afferent ? "&lt;-- " : "--&gt; ");
buf.append(reverse ? "&lt;-- " : "--&gt; ");
}
boolean end = false;
if (level > 5) {
......@@ -74,10 +74,10 @@ public class DependenciesPageHandler implements PageHandler {
}
appended.add(application);
Set<String> dependencies = RegistryContainer.getInstance().getDependencies(application, afferent);
Set<String> dependencies = RegistryContainer.getInstance().getDependencies(application, reverse);
if (dependencies != null && dependencies.size() > 0) {
for (String dependency : dependencies) {
appendDependency(rows, afferent, dependency, level + 1, appended);
appendDependency(rows, reverse, dependency, level + 1, appended);
}
}
appended.remove(application);
......
/*
* Copyright 1999-2011 Alibaba Group.
*
* 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.
*/
package com.alibaba.dubbo.monitor.simple.pages;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
import com.alibaba.dubbo.monitor.simple.RegistryContainer;
/**
* HostsPageHandler
*
* @author william.liangf
*/
@Menu(name = "Hosts", desc = "Show provider and consumer hosts", order = 3000)
@Extension("hosts")
public class HostsPageHandler implements PageHandler {
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);
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>");
List<URL> consumers = RegistryContainer.getInstance().getConsumersByHost(host);
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:", "Providers(" + providersCount + ")", "Consumers(" + consumersCount + ")" }, rows);
}
}
......@@ -20,6 +20,7 @@ import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
import com.alibaba.dubbo.monitor.simple.RegistryContainer;
......@@ -34,24 +35,51 @@ public class ProvidersPageHandler implements PageHandler {
public Page handle(URL url) {
String service = url.getParameter("service");
if (service == null || service.length() == 0) {
throw new IllegalArgumentException("Please input service parameter.");
}
List<List<String>> rows = new ArrayList<List<String>>();
List<URL> providers = RegistryContainer.getInstance().getProviders(service);
if (providers != null && providers.size() > 0) {
for (URL provider : providers) {
List<String> row = new ArrayList<String>();
row.add(provider.toFullString().replace("&", "&amp;"));
rows.add(row);
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>();
row.add(u.toFullString().replace("&", "&amp;"));
rows.add(row);
}
}
return new Page("<a href=\"services.html\">Services</a> &gt; " + service
+ " &gt; 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:" }, 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>();
row.add(u.toFullString().replace("&", "&amp;"));
rows.add(row);
}
}
return new Page("<a href=\"hosts.html\">Hosts</a> &gt; " + NetUtils.getHostName(host) + "/" + host + " &gt; Providers | <a href=\"consumers.html?host=" + host + "\">Consumers</a>", "Providers (" + rows.size() + ")",
new String[] { "Provider URL:" }, 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>();
row.add(u.toFullString().replace("&", "&amp;"));
rows.add(row);
}
}
return new Page("<a href=\"applications.html\">Applications</a> &gt; " + application + " &gt; Providers | <a href=\"consumers.html?application=" + application + "\">Consumers</a>", "Providers (" + rows.size() + ")",
new String[] { "Provider URL:" }, rows);
} else {
throw new IllegalArgumentException("Please input service or host or application parameter.");
}
return new Page("<a href=\"services.html\">Services</a> &gt; " + service
+ " &gt; 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:" }, rows);
}
}
......@@ -19,6 +19,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.container.page.Menu;
......@@ -31,7 +32,7 @@ import com.alibaba.dubbo.monitor.simple.RegistryContainer;
*
* @author william.liangf
*/
@Menu(name = "Services", desc = "Services", order = 1000)
@Menu(name = "Services", desc = "Show registered services.", order = 2000)
@Extension("services")
public class ServicesPageHandler implements PageHandler {
......@@ -44,11 +45,19 @@ public class ServicesPageHandler implements PageHandler {
for (String service : services) {
List<String> row = new ArrayList<String>();
row.add(service);
List<URL> providers = RegistryContainer.getInstance().getProviders(service);
List<URL> providers = RegistryContainer.getInstance().getProvidersByService(service);
int providerSize = providers == null ? 0 : providers.size();
providerCount += providerSize;
if (providers != null && providers.size() > 0) {
URL provider = providers.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("");
}
row.add(providerSize == 0 ? "<font color=\"red\">No provider</a>" : "<a href=\"providers.html?service=" + service + "\">Providers(" + providerSize + ")</a>");
List<URL> consumers = RegistryContainer.getInstance().getConsumers(service);
List<URL> consumers = RegistryContainer.getInstance().getConsumersByService(service);
int consumerSize = consumers == null ? 0 : consumers.size();
consumerCount += consumerSize;
row.add(consumerSize == 0 ? "<font color=\"blue\">No consumer</a>" : "<a href=\"consumers.html?service=" + service + "\">Consumers(" + consumerSize + ")</a>");
......@@ -58,7 +67,7 @@ public class ServicesPageHandler implements PageHandler {
}
}
return new Page("Services", "Services (" + rows.size() + ")",
new String[] { "Service Name:", "Providers(" + providerCount + ")", "Consumers(" + consumerCount + ")", "Statistics", "Charts" }, rows);
new String[] { "Service Name:", "Application", "Owner", "Providers(" + providerCount + ")", "Consumers(" + consumerCount + ")", "Statistics", "Charts" }, rows);
}
}
......@@ -4,4 +4,5 @@ com.alibaba.dubbo.monitor.simple.pages.ConsumersPageHandler
com.alibaba.dubbo.monitor.simple.pages.StatisticsPageHandler
com.alibaba.dubbo.monitor.simple.pages.ChartsPageHandler
com.alibaba.dubbo.monitor.simple.pages.ApplicationsPageHandler
com.alibaba.dubbo.monitor.simple.pages.DependenciesPageHandler
\ No newline at end of file
com.alibaba.dubbo.monitor.simple.pages.DependenciesPageHandler
com.alibaba.dubbo.monitor.simple.pages.HostsPageHandler
\ No newline at end of file
......@@ -75,7 +75,7 @@ public class RegisteredPageHandler implements PageHandler {
}
}
return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " &gt; Registered | <a href=\"subscribed.html?registry=" + registryAddress + "\">Subscribed</a>", "Registered (" + rows.size() + ")",
new String[] { "Register URL:" }, rows);
new String[] { "Provider URL:" }, rows);
}
}
\ No newline at end of file
......@@ -21,6 +21,7 @@ import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
......@@ -33,7 +34,7 @@ import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;
*
* @author william.liangf
*/
@Menu(name = "Registries", desc = "Registries", order = 10000)
@Menu(name = "Registries", desc = "Show connected registries.", order = 10000)
@Extension("registries")
public class RegistriesPageHandler implements PageHandler {
......@@ -46,7 +47,7 @@ public class RegistriesPageHandler implements PageHandler {
for (Registry registry : registries) {
String server = registry.getUrl().getAddress();
List<String> row = new ArrayList<String>();
row.add(server);
row.add(NetUtils.getHostName(server) + "/" + server);
if (registry.isAvailable()) {
row.add("<font color=\"green\">Connected</font>");
} else {
......@@ -66,7 +67,7 @@ public class RegistriesPageHandler implements PageHandler {
}
}
return new Page("Registries", "Registries (" + rows.size() + ")",
new String[] { "Registry Address:", "Ststus:", "Registered(" + registeredCount + ")", "Subscribed(" + subscribedCount + ")" }, rows);
new String[] { "Registry Address:", "Ststus", "Registered(" + registeredCount + ")", "Subscribed(" + subscribedCount + ")" }, rows);
}
}
\ No newline at end of file
......@@ -75,7 +75,7 @@ public class SubscribedPageHandler implements PageHandler {
}
}
return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " &gt; <a href=\"registered.html?registry=" + registryAddress + "\">Registered</a> | Subscribed", "Subscribed (" + rows.size() + ")",
new String[] { "Subscribe URL:" }, rows);
new String[] { "Consumer URL:" }, rows);
}
}
\ No newline at end of file
......@@ -68,7 +68,8 @@ public class ClientsPageHandler implements PageHandler {
Collection<ExchangeChannel> channels = server.getExchangeChannels();
for (ExchangeChannel c : channels) {
List<String> row = new ArrayList<String>();
row.add(NetUtils.toAddressString(c.getRemoteAddress()));
String address = NetUtils.toAddressString(c.getRemoteAddress());
row.add(NetUtils.getHostName(address) + "/" + address);
rows.add(row);
}
}
......
......@@ -21,6 +21,7 @@ import java.util.List;
import com.alibaba.dubbo.common.Extension;
import com.alibaba.dubbo.common.URL;
import com.alibaba.dubbo.common.utils.NetUtils;
import com.alibaba.dubbo.container.page.Menu;
import com.alibaba.dubbo.container.page.Page;
import com.alibaba.dubbo.container.page.PageHandler;
......@@ -32,7 +33,7 @@ import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol;
*
* @author william.liangf
*/
@Menu(name = "Servers", desc="Servers", order = 14000)
@Menu(name = "Servers", desc="Show exported service servers.", order = 14000)
@Extension("servers")
public class ServersPageHandler implements PageHandler {
......@@ -43,7 +44,8 @@ public class ServersPageHandler implements PageHandler {
if (servers != null && servers.size() > 0) {
for (ExchangeServer s : servers) {
List<String> row = new ArrayList<String>();
row.add(s.getUrl().getAddress());
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>");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册