Search in sources :

Example 11 with Page

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);
}
Also used : ArrayList(java.util.ArrayList) ExchangeServer(com.alibaba.dubbo.remoting.exchange.ExchangeServer) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.container.page.Page)

Example 12 with Page

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);
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.container.page.Page) URL(com.alibaba.dubbo.common.URL)

Example 13 with Page

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("&", "&amp;"));
                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> &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:", "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("&", "&amp;"));
                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> &gt; " + NetUtils.getHostName(host) + "/" + host + " &gt; 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("&", "&amp;"));
                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> &gt; " + application + " &gt; 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.");
    }
}
Also used : ArrayList(java.util.ArrayList) List(java.util.List) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.container.page.Page) URL(com.alibaba.dubbo.common.URL)

Example 14 with Page

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) ? "&lt;--" : "--&gt;";
                    rows.add(toRow(" &nbsp;&nbsp;&nbsp;&nbsp; |" + node + " " + entry.getKey(), entry.getValue()));
                }
            }
        }
    }
    StringBuilder nav = new StringBuilder();
    nav.append("<a href=\"services.html\">Services</a> &gt; ");
    nav.append(service);
    nav.append(" &gt; <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> &gt; <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;}\" /> &gt; ");
    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);
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Page(com.alibaba.dubbo.container.page.Page) Date(java.util.Date) ArrayList(java.util.ArrayList) List(java.util.List) SimpleDateFormat(java.text.SimpleDateFormat) File(java.io.File) HashMap(java.util.HashMap) Map(java.util.Map)

Example 15 with Page

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>");
}
Also used : Page(com.alibaba.dubbo.container.page.Page) URL(com.alibaba.dubbo.common.URL)

Aggregations

Page (com.alibaba.dubbo.container.page.Page)17 ArrayList (java.util.ArrayList)15 List (java.util.List)15 URL (com.alibaba.dubbo.common.URL)9 Registry (com.alibaba.dubbo.registry.Registry)3 AbstractRegistry (com.alibaba.dubbo.registry.support.AbstractRegistry)3 SimpleDateFormat (java.text.SimpleDateFormat)3 Date (java.util.Date)3 ExchangeServer (com.alibaba.dubbo.remoting.exchange.ExchangeServer)2 File (java.io.File)2 HashMap (java.util.HashMap)2 Status (com.alibaba.dubbo.common.status.Status)1 StatusChecker (com.alibaba.dubbo.common.status.StatusChecker)1 Menu (com.alibaba.dubbo.container.page.Menu)1 PageHandler (com.alibaba.dubbo.container.page.PageHandler)1 ExchangeChannel (com.alibaba.dubbo.remoting.exchange.ExchangeChannel)1 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 ByteBuffer (java.nio.ByteBuffer)1 FileChannel (java.nio.channels.FileChannel)1