You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by mi...@apache.org on 2018/09/10 13:35:37 UTC
[incubator-dubbo-ops] branch develop updated: change structure
This is an automated email from the ASF dual-hosted git repository.
min pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo-ops.git
The following commit(s) were added to refs/heads/develop by this push:
new 48f9e8d change structure
48f9e8d is described below
commit 48f9e8d965460a4216f28cac41bcae81b0c69f6a
Author: nzomkxia <z8...@gmail.com>
AuthorDate: Mon Sep 10 21:35:28 2018 +0800
change structure
---
.gitignore | 10 +-
README.md | 40 +--
.../pom.xml | 5 -
.../apache/dubbo/admin/DubboAdminApplication.java | 0
.../java/org/apache/dubbo/admin/SpringUtil.java | 0
.../org/apache/dubbo/admin/config/I18nConfig.java | 0
.../dubbo/admin/config/XmlConfiguration.java | 0
.../dubbo/admin/controller/RoutesController.java | 0
.../dubbo/admin/controller/ServiceController.java | 0
.../org/apache/dubbo/admin/domain/ServiceDO.java | 0
.../apache/dubbo/admin/domain/ServiceDetailDO.java | 0
.../org/apache/dubbo/admin/filter/LoginFilter.java | 0
.../biz/common/i18n/MessageResourceService.java | 0
.../i18n/impl/MessageResourceServiceImpl.java | 0
.../admin/governance/service/ConfigService.java | 0
.../admin/governance/service/ConsumerService.java | 0
.../admin/governance/service/OverrideService.java | 0
.../admin/governance/service/OwnerService.java | 0
.../admin/governance/service/ProviderService.java | 0
.../admin/governance/service/RouteService.java | 0
.../admin/governance/service/UserService.java | 0
.../governance/service/impl/AbstractService.java | 0
.../governance/service/impl/ConfigServiceImpl.java | 0
.../service/impl/ConsumerServiceImpl.java | 0
.../service/impl/OverrideServiceImpl.java | 0
.../governance/service/impl/OwnerServiceImpl.java | 0
.../service/impl/ProviderServiceImpl.java | 0
.../governance/service/impl/RouteServiceImpl.java | 0
.../governance/service/impl/UserServiceImpl.java | 0
.../admin/governance/sync/RegistryServerSync.java | 0
.../dubbo/admin/governance/sync/util/Pair.java | 0
.../admin/governance/sync/util/SyncUtils.java | 0
.../admin/governance/util/GovernanceWarmup.java | 0
.../dubbo/admin/governance/util/Paginator.java | 0
.../dubbo/admin/governance/util/UrlUtils.java | 0
.../dubbo/admin/governance/util/WebConstants.java | 0
.../admin/registry/common/ChangeListener.java | 0
.../dubbo/admin/registry/common/StatusManager.java | 0
.../dubbo/admin/registry/common/domain/Access.java | 0
.../admin/registry/common/domain/Agreement.java | 0
.../admin/registry/common/domain/Approval.java | 0
.../common/domain/ApprovalRequisition.java | 0
.../dubbo/admin/registry/common/domain/Change.java | 0
.../admin/registry/common/domain/Cluster.java | 0
.../dubbo/admin/registry/common/domain/Config.java | 0
.../admin/registry/common/domain/Consumer.java | 0
.../admin/registry/common/domain/DependItem.java | 0
.../admin/registry/common/domain/Dependency.java | 0
.../admin/registry/common/domain/Document.java | 0
.../dubbo/admin/registry/common/domain/Entity.java | 0
.../admin/registry/common/domain/Favorite.java | 0
.../admin/registry/common/domain/Feature.java | 0
.../dubbo/admin/registry/common/domain/Layer.java | 0
.../admin/registry/common/domain/LoadBalance.java | 0
.../dubbo/admin/registry/common/domain/Mock.java | 0
.../admin/registry/common/domain/Operation.java | 0
.../admin/registry/common/domain/Override.java | 0
.../dubbo/admin/registry/common/domain/Owner.java | 0
.../admin/registry/common/domain/PageList.java | 0
.../admin/registry/common/domain/Provider.java | 0
.../admin/registry/common/domain/Registry.java | 0
.../dubbo/admin/registry/common/domain/Route.java | 0
.../registry/common/domain/SearchHistory.java | 0
.../dubbo/admin/registry/common/domain/Test.java | 0
.../dubbo/admin/registry/common/domain/User.java | 0
.../dubbo/admin/registry/common/domain/Weight.java | 0
.../registry/common/registry/ConvertUtil.java | 0
.../admin/registry/common/route/OverrideUtils.java | 0
.../admin/registry/common/route/ParseUtils.java | 0
.../admin/registry/common/route/RouteRule.java | 0
.../registry/common/route/RouteRuleUtils.java | 0
.../admin/registry/common/route/RouteUtils.java | 0
.../common/status/DatabaseStatusChecker.java | 0
.../registry/common/status/LoadStatusChecker.java | 0
.../common/status/MemoryStatusChecker.java | 0
.../dubbo/admin/registry/common/util/Coder.java | 0
.../dubbo/admin/registry/common/util/Entities.java | 0
.../admin/registry/common/util/IntHashMap.java | 0
.../admin/registry/common/util/LocaleUtils.java | 0
.../admin/registry/common/util/MessageSource.java | 0
.../admin/registry/common/util/OverrideUtils.java | 0
.../registry/common/util/StringEscapeUtils.java | 0
.../dubbo/admin/registry/common/util/Tool.java | 0
.../apache/dubbo/admin/web/mvc/BaseController.java | 0
.../dubbo/admin/web/mvc/RouterController.java | 0
.../dubbo/admin/web/mvc/common/auth/DubboUser.java | 0
.../admin/web/mvc/common/i18n/LocaleUtil.java | 0
.../web/mvc/governance/AccessesController.java | 0
.../web/mvc/governance/AddressesController.java | 0
.../web/mvc/governance/LoadbalancesController.java | 0
.../web/mvc/governance/OverridesController.java | 0
.../admin/web/mvc/governance/OwnersController.java | 0
.../admin/web/mvc/governance/RoutesController.java | 0
.../mvc/governance/ServiceDetailController.java | 0
.../web/mvc/governance/ServicesController.java | 0
.../web/mvc/governance/WeightsController.java | 0
.../dubbo/admin/web/mvc/home/IndexController.java | 0
.../admin/web/mvc/sysinfo/DumpController.java | 0
.../admin/web/mvc/sysinfo/DumpsController.java | 0
.../admin/web/mvc/sysinfo/EnvsController.java | 0
.../admin/web/mvc/sysinfo/LogsController.java | 0
.../admin/web/mvc/sysinfo/StatusesController.java | 0
.../admin/web/mvc/sysinfo/VersionsController.java | 0
.../dubbo/admin/web/pulltool/DateFormatUtil.java | 0
.../dubbo/admin/web/pulltool/RootContextPath.java | 0
.../org/apache/dubbo/admin/web/pulltool/Tool.java | 0
.../src/main/resources/application.properties | 0
.../src/main/resources/dubbo-admin.xml | 0
.../src/main/resources/log4j.properties | 0
.../.babelrc | 0
.../.editorconfig | 0
.../.eslintignore | 0
.../.eslintrc.js | 0
.../.gitignore | 0
.../.postcssrc.js | 0
.../README.md | 0
.../build/build.js | 0
.../build/check-versions.js | 0
.../build/logo.png | Bin
.../build/utils.js | 2 +-
.../build/vue-loader.conf.js | 2 +-
.../build/webpack.base.conf.js | 2 +-
.../build/webpack.dev.conf.js | 0
.../build/webpack.prod.conf.js | 2 +-
.../config/dev.env.js | 0
.../config/index.js | 0
.../config/prod.env.js | 0
.../index.html | 0
.../package.json | 0
.../pom.xml | 0
.../src/.gitrepo | 0
.../src/App.vue | 0
.../src/assets/logo.png | Bin
.../src/assets/man_4.jpg | Bin
.../src/components/Drawer.vue | 0
.../src/components/Footers.vue | 0
.../src/components/RoutingRule.vue | 0
.../src/components/ServiceDetail.vue | 0
.../src/components/ServiceSearch.vue | 0
.../src/components/Toolbar.vue | 0
.../src/components/http-common.js | 0
.../src/main.js | 0
.../src/router/index.js | 0
.../src/store/index.js | 0
.../src/util/index.js | 0
.../static/.gitkeep | 0
dubbo-admin/README.md | 17 -
dubbo-admin/pom.xml | 49 ---
dubbo-monitor-simple/pom.xml | 113 ------
.../src/main/assembly/assembly.xml | 40 ---
.../dubbo/monitor/simple/MonitorStarter.java | 27 --
.../dubbo/monitor/simple/SimpleMonitorService.java | 400 ---------------------
.../dubbo/monitor/simple/common/CountUtils.java | 92 -----
.../alibaba/dubbo/monitor/simple/common/Menu.java | 39 --
.../monitor/simple/common/MenuComparator.java | 45 ---
.../alibaba/dubbo/monitor/simple/common/Page.java | 82 -----
.../monitor/simple/container/JettyContainer.java | 89 -----
.../simple/container/RegistryContainer.java | 293 ---------------
.../simple/pages/ApplicationsPageHandler.java | 82 -----
.../monitor/simple/pages/ChartsPageHandler.java | 95 -----
.../monitor/simple/pages/ClientsPageHandler.java | 77 ----
.../monitor/simple/pages/ConsumersPageHandler.java | 88 -----
.../simple/pages/DependenciesPageHandler.java | 88 -----
.../monitor/simple/pages/HomePageHandler.java | 48 ---
.../monitor/simple/pages/HostsPageHandler.java | 75 ----
.../dubbo/monitor/simple/pages/LogPageHandler.java | 106 ------
.../monitor/simple/pages/ProvidersPageHandler.java | 88 -----
.../simple/pages/RegisteredPageHandler.java | 78 ----
.../simple/pages/RegistriesPageHandler.java | 70 ----
.../monitor/simple/pages/ServersPageHandler.java | 55 ---
.../monitor/simple/pages/ServicesPageHandler.java | 72 ----
.../simple/pages/StatisticsPageHandler.java | 167 ---------
.../monitor/simple/pages/StatusPageHandler.java | 84 -----
.../simple/pages/SubscribedPageHandler.java | 78 ----
.../monitor/simple/pages/SystemPageHandler.java | 137 -------
.../simple/pages/UnregisterPageHandler.java | 49 ---
.../simple/pages/UnsubscribePageHandler.java | 64 ----
.../dubbo/monitor/simple/servlet/PageHandler.java | 37 --
.../dubbo/monitor/simple/servlet/PageServlet.java | 282 ---------------
.../monitor/simple/servlet/ResourceFilter.java | 151 --------
.../main/resources/META-INF/assembly/bin/dump.sh | 92 -----
.../resources/META-INF/assembly/bin/restart.sh | 4 -
.../main/resources/META-INF/assembly/bin/server.sh | 24 --
.../main/resources/META-INF/assembly/bin/start.bat | 22 --
.../main/resources/META-INF/assembly/bin/start.sh | 106 ------
.../main/resources/META-INF/assembly/bin/stop.sh | 44 ---
.../internal/com.alibaba.dubbo.container.Container | 2 -
...libaba.dubbo.monitor.simple.servlet.PageHandler | 19 -
.../META-INF/spring/dubbo-monitor-simple.xml | 41 ---
.../src/main/resources/conf/dubbo.properties | 29 --
dubbo-monitor-simple/src/main/resources/log4j.xml | 29 --
.../dubbo/monitor/simple/SimpleMonitor.java | 25 --
.../monitor/simple/SimpleMonitorServiceTest.java | 34 --
.../src/test/resources/dubbo.properties | 29 --
dubbo-monitor-simple/src/test/resources/log4j.xml | 29 --
dubbo-registry-simple/pom.xml | 84 -----
.../src/main/assembly/assembly.xml | 40 ---
.../registry/simple/SimpleRegistryService.java | 209 -----------
.../main/resources/META-INF/assembly/bin/dump.sh | 92 -----
.../resources/META-INF/assembly/bin/restart.sh | 4 -
.../main/resources/META-INF/assembly/bin/server.sh | 24 --
.../main/resources/META-INF/assembly/bin/start.bat | 22 --
.../main/resources/META-INF/assembly/bin/start.sh | 92 -----
.../main/resources/META-INF/assembly/bin/stop.sh | 44 ---
.../META-INF/spring/dubbo-registry-simple.xml | 45 ---
.../src/main/resources/conf/dubbo.properties | 21 --
.../dubbo/registry/simple/SimpleRegistry.java | 25 --
.../registry/simple/SimpleRegistryServiceTest.java | 31 --
.../src/test/resources/dubbo.properties | 21 --
dubbo-registry-simple/src/test/resources/log4j.xml | 29 --
pom.xml | 264 ++++----------
211 files changed, 80 insertions(+), 4916 deletions(-)
diff --git a/.gitignore b/.gitignore
index 40bf266..e229655 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,8 +29,8 @@ target/
.DS_Store
Thumbs.db
-dubbo-admin/dubbo-admin-backend/src/main/resources/public
-dubbo-admin/dubbo-admin-backend/target
-dubbo-admin/dubbo-admin-frontend/dist
-dubbo-admin/dubbo-admin-frontend/node
-dubbo-admin/dubbo-admin-frontend/node-modules
+dubbo-admin-backend/src/main/resources/public
+dubbo-admin-backend/target
+dubbo-admin-frontend/dist
+dubbo-admin-frontend/node
+dubbo-admin-frontend/node-modules
diff --git a/README.md b/README.md
index eb41128..653f8d7 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,17 @@
-### dubbo-ops
-[![Build Status](https://travis-ci.org/apache/incubator-dubbo-ops.svg?branch=master)](https://travis-ci.org/apache/incubator-dubbo-ops)
-[![Gitter](https://badges.gitter.im/alibaba/dubbo.svg)](https://gitter.im/alibaba/dubbo?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+# Dubbo admin
-The following modules in [Apache Dubbo(incubating)](https://github.com/apache/incubator-dubbo) have been moved here:
+> dubbo admin front end and back end
-* dubbo-admin
-* dubbo-monitor-simple
-* dubbo-registry-simple
+## Build setup
+``` bash
+# build
+mvn clean install
-### How to use it
-You can get a release of dubbo monitor in two steps:
-
-#### dubbo admin
-please refer to the README.md in dubbo admin module
-
-#### dubbo monitor and dubbo registry
-- Step 1:
-```
-git clone https://github.com/apache/incubator-dubbo-ops
-```
-
-- Step 2:
-```
-cd incubator-dubbo-ops && mvn package
-```
-
-Then you will find:
-
- * dubbo-monitor-simple-2.0.0-assembly.tar.gz in incubator-dubbo-ops\dubbo-monitor-simple\target directory. Unzip it you will find the shell scripts for starting or stopping monitor.
- * dubbo-registry-simple-2.0.0-assembly.tar.gz in incubator-dubbo-ops\dubbo-registry-simple\target directory. Unzip it you will find the shell scripts for starting or stopping registry.
-
+# run
+mvn --projects dubbo-admin-backend spring-boot:run
+# visit
+localhost:8080
+```
\ No newline at end of file
diff --git a/dubbo-admin/dubbo-admin-backend/pom.xml b/dubbo-admin-backend/pom.xml
similarity index 95%
rename from dubbo-admin/dubbo-admin-backend/pom.xml
rename to dubbo-admin-backend/pom.xml
index 5b12ca6..6681321 100644
--- a/dubbo-admin/dubbo-admin-backend/pom.xml
+++ b/dubbo-admin-backend/pom.xml
@@ -50,30 +50,25 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
- <version>3.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
- <version>2.6.2</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
- <version>2.12.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
- <version>1.2.46</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
- <version>1.22</version>
</dependency>
</dependencies>
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/DubboAdminApplication.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/SpringUtil.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/I18nConfig.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/config/XmlConfiguration.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/RoutesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/controller/ServiceController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDO.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/domain/ServiceDetailDO.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/filter/LoginFilter.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/MessageResourceService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/biz/common/i18n/impl/MessageResourceServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConfigService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ConsumerService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OverrideService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/OwnerService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/ProviderService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/RouteService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/UserService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/AbstractService.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConfigServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ConsumerServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OverrideServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/OwnerServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/ProviderServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/RouteServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/service/impl/UserServiceImpl.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/RegistryServerSync.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/Pair.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/sync/util/SyncUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/GovernanceWarmup.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/Paginator.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/UrlUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/governance/util/WebConstants.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/ChangeListener.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/StatusManager.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Access.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Agreement.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Approval.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/ApprovalRequisition.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Change.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Cluster.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Config.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Consumer.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/DependItem.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Dependency.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Document.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Entity.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Favorite.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Feature.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Layer.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/LoadBalance.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Mock.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Operation.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Override.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Owner.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/PageList.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Provider.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Registry.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Route.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/SearchHistory.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Test.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/User.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/domain/Weight.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/registry/ConvertUtil.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/OverrideUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/ParseUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRule.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteRuleUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/route/RouteUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/DatabaseStatusChecker.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/LoadStatusChecker.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/status/MemoryStatusChecker.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Coder.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Entities.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/IntHashMap.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/LocaleUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/MessageSource.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/OverrideUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/StringEscapeUtils.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/registry/common/util/Tool.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/BaseController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/RouterController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/auth/DubboUser.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/common/i18n/LocaleUtil.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AccessesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/AddressesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/LoadbalancesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OverridesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/OwnersController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/RoutesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServiceDetailController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/ServicesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/governance/WeightsController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/home/IndexController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/DumpsController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/EnvsController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/LogsController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/StatusesController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/mvc/sysinfo/VersionsController.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/DateFormatUtil.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/RootContextPath.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java b/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java
rename to dubbo-admin-backend/src/main/java/org/apache/dubbo/admin/web/pulltool/Tool.java
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/resources/application.properties b/dubbo-admin-backend/src/main/resources/application.properties
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/resources/application.properties
rename to dubbo-admin-backend/src/main/resources/application.properties
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/resources/dubbo-admin.xml b/dubbo-admin-backend/src/main/resources/dubbo-admin.xml
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/resources/dubbo-admin.xml
rename to dubbo-admin-backend/src/main/resources/dubbo-admin.xml
diff --git a/dubbo-admin/dubbo-admin-backend/src/main/resources/log4j.properties b/dubbo-admin-backend/src/main/resources/log4j.properties
similarity index 100%
rename from dubbo-admin/dubbo-admin-backend/src/main/resources/log4j.properties
rename to dubbo-admin-backend/src/main/resources/log4j.properties
diff --git a/dubbo-admin/dubbo-admin-frontend/.babelrc b/dubbo-admin-frontend/.babelrc
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/.babelrc
rename to dubbo-admin-frontend/.babelrc
diff --git a/dubbo-admin/dubbo-admin-frontend/.editorconfig b/dubbo-admin-frontend/.editorconfig
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/.editorconfig
rename to dubbo-admin-frontend/.editorconfig
diff --git a/dubbo-admin/dubbo-admin-frontend/.eslintignore b/dubbo-admin-frontend/.eslintignore
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/.eslintignore
rename to dubbo-admin-frontend/.eslintignore
diff --git a/dubbo-admin/dubbo-admin-frontend/.eslintrc.js b/dubbo-admin-frontend/.eslintrc.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/.eslintrc.js
rename to dubbo-admin-frontend/.eslintrc.js
diff --git a/dubbo-admin/dubbo-admin-frontend/.gitignore b/dubbo-admin-frontend/.gitignore
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/.gitignore
rename to dubbo-admin-frontend/.gitignore
diff --git a/dubbo-admin/dubbo-admin-frontend/.postcssrc.js b/dubbo-admin-frontend/.postcssrc.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/.postcssrc.js
rename to dubbo-admin-frontend/.postcssrc.js
diff --git a/dubbo-admin/dubbo-admin-frontend/README.md b/dubbo-admin-frontend/README.md
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/README.md
rename to dubbo-admin-frontend/README.md
diff --git a/dubbo-admin/dubbo-admin-frontend/build/build.js b/dubbo-admin-frontend/build/build.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/build/build.js
rename to dubbo-admin-frontend/build/build.js
diff --git a/dubbo-admin/dubbo-admin-frontend/build/check-versions.js b/dubbo-admin-frontend/build/check-versions.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/build/check-versions.js
rename to dubbo-admin-frontend/build/check-versions.js
diff --git a/dubbo-admin/dubbo-admin-frontend/build/logo.png b/dubbo-admin-frontend/build/logo.png
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/build/logo.png
rename to dubbo-admin-frontend/build/logo.png
diff --git a/dubbo-admin/dubbo-admin-frontend/build/utils.js b/dubbo-admin-frontend/build/utils.js
similarity index 98%
rename from dubbo-admin/dubbo-admin-frontend/build/utils.js
rename to dubbo-admin-frontend/build/utils.js
index e534fb0..5414568 100644
--- a/dubbo-admin/dubbo-admin-frontend/build/utils.js
+++ b/dubbo-admin-frontend/build/utils.js
@@ -1,6 +1,6 @@
'use strict'
const path = require('path')
-const config = require('../config')
+const config = require('../config/index')
const ExtractTextPlugin = require('extract-text-webpack-plugin')
const packageConfig = require('../package.json')
diff --git a/dubbo-admin/dubbo-admin-frontend/build/vue-loader.conf.js b/dubbo-admin-frontend/build/vue-loader.conf.js
similarity index 92%
rename from dubbo-admin/dubbo-admin-frontend/build/vue-loader.conf.js
rename to dubbo-admin-frontend/build/vue-loader.conf.js
index 33ed58b..6365d98 100644
--- a/dubbo-admin/dubbo-admin-frontend/build/vue-loader.conf.js
+++ b/dubbo-admin-frontend/build/vue-loader.conf.js
@@ -1,6 +1,6 @@
'use strict'
const utils = require('./utils')
-const config = require('../config')
+const config = require('../config/index')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
? config.build.productionSourceMap
diff --git a/dubbo-admin/dubbo-admin-frontend/build/webpack.base.conf.js b/dubbo-admin-frontend/build/webpack.base.conf.js
similarity index 98%
rename from dubbo-admin/dubbo-admin-frontend/build/webpack.base.conf.js
rename to dubbo-admin-frontend/build/webpack.base.conf.js
index 1f4f47e..5bcfcca 100644
--- a/dubbo-admin/dubbo-admin-frontend/build/webpack.base.conf.js
+++ b/dubbo-admin-frontend/build/webpack.base.conf.js
@@ -1,7 +1,7 @@
'use strict'
const path = require('path')
const utils = require('./utils')
-const config = require('../config')
+const config = require('../config/index')
const vueLoaderConfig = require('./vue-loader.conf')
function resolve (dir) {
diff --git a/dubbo-admin/dubbo-admin-frontend/build/webpack.dev.conf.js b/dubbo-admin-frontend/build/webpack.dev.conf.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/build/webpack.dev.conf.js
rename to dubbo-admin-frontend/build/webpack.dev.conf.js
diff --git a/dubbo-admin/dubbo-admin-frontend/build/webpack.prod.conf.js b/dubbo-admin-frontend/build/webpack.prod.conf.js
similarity index 99%
rename from dubbo-admin/dubbo-admin-frontend/build/webpack.prod.conf.js
rename to dubbo-admin-frontend/build/webpack.prod.conf.js
index d9f99f6..b60b3f6 100644
--- a/dubbo-admin/dubbo-admin-frontend/build/webpack.prod.conf.js
+++ b/dubbo-admin-frontend/build/webpack.prod.conf.js
@@ -2,7 +2,7 @@
const path = require('path')
const utils = require('./utils')
const webpack = require('webpack')
-const config = require('../config')
+const config = require('../config/index')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const CopyWebpackPlugin = require('copy-webpack-plugin')
diff --git a/dubbo-admin/dubbo-admin-frontend/config/dev.env.js b/dubbo-admin-frontend/config/dev.env.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/config/dev.env.js
rename to dubbo-admin-frontend/config/dev.env.js
diff --git a/dubbo-admin/dubbo-admin-frontend/config/index.js b/dubbo-admin-frontend/config/index.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/config/index.js
rename to dubbo-admin-frontend/config/index.js
diff --git a/dubbo-admin/dubbo-admin-frontend/config/prod.env.js b/dubbo-admin-frontend/config/prod.env.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/config/prod.env.js
rename to dubbo-admin-frontend/config/prod.env.js
diff --git a/dubbo-admin/dubbo-admin-frontend/index.html b/dubbo-admin-frontend/index.html
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/index.html
rename to dubbo-admin-frontend/index.html
diff --git a/dubbo-admin/dubbo-admin-frontend/package.json b/dubbo-admin-frontend/package.json
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/package.json
rename to dubbo-admin-frontend/package.json
diff --git a/dubbo-admin/dubbo-admin-frontend/pom.xml b/dubbo-admin-frontend/pom.xml
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/pom.xml
rename to dubbo-admin-frontend/pom.xml
diff --git a/dubbo-admin/dubbo-admin-frontend/src/.gitrepo b/dubbo-admin-frontend/src/.gitrepo
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/.gitrepo
rename to dubbo-admin-frontend/src/.gitrepo
diff --git a/dubbo-admin/dubbo-admin-frontend/src/App.vue b/dubbo-admin-frontend/src/App.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/App.vue
rename to dubbo-admin-frontend/src/App.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/assets/logo.png b/dubbo-admin-frontend/src/assets/logo.png
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/assets/logo.png
rename to dubbo-admin-frontend/src/assets/logo.png
diff --git a/dubbo-admin/dubbo-admin-frontend/src/assets/man_4.jpg b/dubbo-admin-frontend/src/assets/man_4.jpg
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/assets/man_4.jpg
rename to dubbo-admin-frontend/src/assets/man_4.jpg
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/Drawer.vue b/dubbo-admin-frontend/src/components/Drawer.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/Drawer.vue
rename to dubbo-admin-frontend/src/components/Drawer.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/Footers.vue b/dubbo-admin-frontend/src/components/Footers.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/Footers.vue
rename to dubbo-admin-frontend/src/components/Footers.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/RoutingRule.vue b/dubbo-admin-frontend/src/components/RoutingRule.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/RoutingRule.vue
rename to dubbo-admin-frontend/src/components/RoutingRule.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/ServiceDetail.vue b/dubbo-admin-frontend/src/components/ServiceDetail.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/ServiceDetail.vue
rename to dubbo-admin-frontend/src/components/ServiceDetail.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/ServiceSearch.vue b/dubbo-admin-frontend/src/components/ServiceSearch.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/ServiceSearch.vue
rename to dubbo-admin-frontend/src/components/ServiceSearch.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/Toolbar.vue b/dubbo-admin-frontend/src/components/Toolbar.vue
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/Toolbar.vue
rename to dubbo-admin-frontend/src/components/Toolbar.vue
diff --git a/dubbo-admin/dubbo-admin-frontend/src/components/http-common.js b/dubbo-admin-frontend/src/components/http-common.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/components/http-common.js
rename to dubbo-admin-frontend/src/components/http-common.js
diff --git a/dubbo-admin/dubbo-admin-frontend/src/main.js b/dubbo-admin-frontend/src/main.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/main.js
rename to dubbo-admin-frontend/src/main.js
diff --git a/dubbo-admin/dubbo-admin-frontend/src/router/index.js b/dubbo-admin-frontend/src/router/index.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/router/index.js
rename to dubbo-admin-frontend/src/router/index.js
diff --git a/dubbo-admin/dubbo-admin-frontend/src/store/index.js b/dubbo-admin-frontend/src/store/index.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/store/index.js
rename to dubbo-admin-frontend/src/store/index.js
diff --git a/dubbo-admin/dubbo-admin-frontend/src/util/index.js b/dubbo-admin-frontend/src/util/index.js
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/src/util/index.js
rename to dubbo-admin-frontend/src/util/index.js
diff --git a/dubbo-admin/dubbo-admin-frontend/static/.gitkeep b/dubbo-admin-frontend/static/.gitkeep
similarity index 100%
rename from dubbo-admin/dubbo-admin-frontend/static/.gitkeep
rename to dubbo-admin-frontend/static/.gitkeep
diff --git a/dubbo-admin/README.md b/dubbo-admin/README.md
deleted file mode 100644
index 653f8d7..0000000
--- a/dubbo-admin/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Dubbo admin
-
-> dubbo admin front end and back end
-
-## Build setup
-
-``` bash
-# build
-mvn clean install
-
-# run
-mvn --projects dubbo-admin-backend spring-boot:run
-
-# visit
-localhost:8080
-
-```
\ No newline at end of file
diff --git a/dubbo-admin/pom.xml b/dubbo-admin/pom.xml
deleted file mode 100644
index 5038d0c..0000000
--- a/dubbo-admin/pom.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one or more
- ~ contributor license agreements. See the NOTICE file distributed with
- ~ this work for additional information regarding copyright ownership.
- ~ The ASF licenses this file to You under the Apache License, Version 2.0
- ~ (the "License"); you may not use this file except in compliance with
- ~ he 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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.apache</groupId>
- <artifactId>dubbo-admin</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <modules>
- <module>dubbo-admin-frontend</module>
- <module>dubbo-admin-backend</module>
- </modules>
- <packaging>pom</packaging>
-
- <name>dubbo-admin</name>
- <description>Dubbo admin front and back end</description>
-
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.0.2.RELEASE</version>
- <relativePath/> <!-- lookup parent from repository -->
- </parent>
-
- <properties>
- <main.basedir>${project.basedir}</main.basedir>
- </properties>
-
-
-
-
-</project>
diff --git a/dubbo-monitor-simple/pom.xml b/dubbo-monitor-simple/pom.xml
deleted file mode 100644
index 3b774b5..0000000
--- a/dubbo-monitor-simple/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo-ops</artifactId>
- <version>2.0.0</version>
- </parent>
- <artifactId>dubbo-monitor-simple</artifactId>
- <packaging>jar</packaging>
- <name>${project.artifactId}</name>
- <description>The reference implementation of dubbo monitor</description>
- <properties>
- <skip_maven_deploy>false</skip_maven_deploy>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- </dependency>
- <dependency>
- <groupId>jfree</groupId>
- <artifactId>jfreechart</artifactId>
- </dependency>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-framework</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty</artifactId>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>unpack</id>
- <phase>package</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>${dubbo_all_version}</version>
- <outputDirectory>${project.build.directory}/dubbo</outputDirectory>
- <includes>META-INF/assembly/**</includes>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptor>src/main/assembly/assembly.xml</descriptor>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/assembly/assembly.xml b/dubbo-monitor-simple/src/main/assembly/assembly.xml
deleted file mode 100644
index 39f34dc..0000000
--- a/dubbo-monitor-simple/src/main/assembly/assembly.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-<assembly>
- <id>assembly</id>
- <formats>
- <format>tar.gz</format>
- </formats>
- <includeBaseDirectory>true</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${project.build.directory}/classes/META-INF/assembly/bin</directory>
- <outputDirectory>assembly.bin</outputDirectory>
- <fileMode>0755</fileMode>
- </fileSet>
- <fileSet>
- <directory>src/main/resources/conf</directory>
- <outputDirectory>conf</outputDirectory>
- <fileMode>0644</fileMode>
- </fileSet>
- </fileSets>
- <dependencySets>
- <dependencySet>
- <outputDirectory>lib</outputDirectory>
- </dependencySet>
- </dependencySets>
-</assembly>
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/MonitorStarter.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/MonitorStarter.java
deleted file mode 100644
index ae565de..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/MonitorStarter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.container.Main;
-
-public class MonitorStarter {
- public static void main(String[] args) {
- System.setProperty(Constants.DUBBO_PROPERTIES_KEY, "conf/dubbo.properties");
- Main.main(args);
- }
-}
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorService.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorService.java
deleted file mode 100644
index b66f1fa..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorService.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.logger.Logger;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubbo.common.utils.ConfigUtils;
-import com.alibaba.dubbo.common.utils.NamedThreadFactory;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.MonitorService;
-import com.alibaba.dubbo.monitor.simple.common.CountUtils;
-
-import org.jfree.chart.ChartFactory;
-import org.jfree.chart.JFreeChart;
-import org.jfree.chart.axis.DateAxis;
-import org.jfree.chart.plot.XYPlot;
-import org.jfree.data.time.Minute;
-import org.jfree.data.time.TimeSeries;
-import org.jfree.data.time.TimeSeriesCollection;
-
-import javax.imageio.ImageIO;
-import java.awt.*;
-import java.awt.image.BufferedImage;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.text.DecimalFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.BlockingQueue;
-import java.util.concurrent.Executors;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * SimpleMonitorService
- */
-public class SimpleMonitorService implements MonitorService {
-
- private static final Logger logger = LoggerFactory.getLogger(SimpleMonitorService.class);
-
- private static final String[] types = {SUCCESS, FAILURE, ELAPSED, CONCURRENT, MAX_ELAPSED, MAX_CONCURRENT};
-
- private static final String POISON_PROTOCOL = "poison";
- private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1, new NamedThreadFactory("DubboMonitorTimer", true));
- private final ScheduledFuture<?> chartFuture;
- private final Thread writeThread;
- private final BlockingQueue<URL> queue;
- private String statisticsDirectory = "statistics";
- private String chartsDirectory = "charts";
- private volatile boolean running = true;
-
- public SimpleMonitorService() {
- queue = new LinkedBlockingQueue<URL>(Integer.parseInt(ConfigUtils.getProperty("dubbo.monitor.queue", "100000")));
- writeThread = new Thread(new Runnable() {
- public void run() {
- while (running) {
- try {
- write(); // write statistics
- } catch (Throwable t) {
- logger.error("Unexpected error occur at write stat log, cause: " + t.getMessage(), t);
- try {
- Thread.sleep(5000); // retry after 5 secs
- } catch (Throwable t2) {
- }
- }
- }
- }
- });
- writeThread.setDaemon(true);
- writeThread.setName("DubboMonitorAsyncWriteLogThread");
- writeThread.start();
- chartFuture = scheduledExecutorService.scheduleWithFixedDelay(new Runnable() {
- public void run() {
- try {
- draw(); // draw chart
- } catch (Throwable t) {
- logger.error("Unexpected error occur at draw stat chart, cause: " + t.getMessage(), t);
- }
- }
- }, 1, 300, TimeUnit.SECONDS);
- statisticsDirectory = ConfigUtils.getProperty("dubbo.statistics.directory");
- chartsDirectory = ConfigUtils.getProperty("dubbo.charts.directory");
- }
-
- private static void createChart(String key, String service, String method, String date, String[] types, Map<String, long[]> data, double[] summary, String path) {
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
- DecimalFormat numberFormat = new DecimalFormat("###,##0.##");
- TimeSeriesCollection xydataset = new TimeSeriesCollection();
- for (int i = 0; i < types.length; i++) {
- String type = types[i];
- TimeSeries timeseries = new TimeSeries(type);
- for (Map.Entry<String, long[]> entry : data.entrySet()) {
- try {
- timeseries.add(new Minute(dateFormat.parse(date + entry.getKey())), entry.getValue()[i]);
- } catch (ParseException e) {
- logger.error(e.getMessage(), e);
- }
- }
- xydataset.addSeries(timeseries);
- }
- JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(
- "max: " + numberFormat.format(summary[0]) + (summary[1] >= 0 ? " min: " + numberFormat.format(summary[1]) : "")
- + " avg: " + numberFormat.format(summary[2]) + (summary[3] >= 0 ? " sum: " + numberFormat.format(summary[3]) : ""),
- toDisplayService(service) + " " + method + " " + toDisplayDate(date), key, xydataset, true, true, false);
- jfreechart.setBackgroundPaint(Color.WHITE);
- XYPlot xyplot = (XYPlot) jfreechart.getPlot();
- xyplot.setBackgroundPaint(Color.WHITE);
- xyplot.setDomainGridlinePaint(Color.GRAY);
- xyplot.setRangeGridlinePaint(Color.GRAY);
- xyplot.setDomainGridlinesVisible(true);
- xyplot.setRangeGridlinesVisible(true);
- DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis();
- dateaxis.setDateFormatOverride(new SimpleDateFormat("HH:mm"));
- BufferedImage image = jfreechart.createBufferedImage(600, 300);
- try {
- if (logger.isInfoEnabled()) {
- logger.info("write chart: " + path);
- }
- File methodChartFile = new File(path);
- File methodChartDir = methodChartFile.getParentFile();
- if (methodChartDir != null && !methodChartDir.exists()) {
- methodChartDir.mkdirs();
- }
- FileOutputStream output = new FileOutputStream(methodChartFile);
- try {
- ImageIO.write(image, "png", output);
- output.flush();
- } finally {
- output.close();
- }
- } catch (IOException e) {
- logger.warn(e.getMessage(), e);
- }
- }
-
- private static String toDisplayService(String service) {
- int i = service.lastIndexOf('.');
- if (i >= 0) {
- return service.substring(i + 1);
- }
- return service;
- }
-
- private static String toDisplayDate(String date) {
- try {
- return new SimpleDateFormat("yyyy-MM-dd").format(new SimpleDateFormat("yyyyMMdd").parse(date));
- } catch (ParseException e) {
- return date;
- }
- }
-
- public void close() {
- try {
- running = false;
- queue.offer(new URL(POISON_PROTOCOL, NetUtils.LOCALHOST, 0));
- } catch (Throwable t) {
- logger.warn(t.getMessage(), t);
- }
- try {
- chartFuture.cancel(true);
- } catch (Throwable t) {
- logger.warn(t.getMessage(), t);
- }
- }
-
- private void write() throws Exception {
- URL statistics = queue.take();
- if (POISON_PROTOCOL.equals(statistics.getProtocol())) {
- return;
- }
- String timestamp = statistics.getParameter(Constants.TIMESTAMP_KEY);
- Date now;
- if (timestamp == null || timestamp.length() == 0) {
- now = new Date();
- } else if (timestamp.length() == "yyyyMMddHHmmss".length()) {
- now = new SimpleDateFormat("yyyyMMddHHmmss").parse(timestamp);
- } else {
- now = new Date(Long.parseLong(timestamp));
- }
- String day = new SimpleDateFormat("yyyyMMdd").format(now);
- SimpleDateFormat format = new SimpleDateFormat("HHmm");
- for (String key : types) {
- try {
- String type;
- String consumer;
- String provider;
- if (statistics.hasParameter(PROVIDER)) {
- type = CONSUMER;
- consumer = statistics.getHost();
- provider = statistics.getParameter(PROVIDER);
- int i = provider.indexOf(':');
- if (i > 0) {
- provider = provider.substring(0, i);
- }
- } else {
- type = PROVIDER;
- consumer = statistics.getParameter(CONSUMER);
- int i = consumer == null ? -1 : consumer.indexOf(':');
- if (i > 0) {
- consumer = consumer.substring(0, i);
- }
- provider = statistics.getHost();
- }
- String filename = statisticsDirectory
- + "/" + day
- + "/" + statistics.getServiceInterface()
- + "/" + statistics.getParameter(METHOD)
- + "/" + consumer
- + "/" + provider
- + "/" + type + "." + key;
- File file = new File(filename);
- File dir = file.getParentFile();
- if (dir != null && !dir.exists()) {
- dir.mkdirs();
- }
- FileWriter writer = new FileWriter(file, true);
- try {
- writer.write(format.format(now) + " " + statistics.getParameter(key, 0) + "\n");
- writer.flush();
- } finally {
- writer.close();
- }
- } catch (Throwable t) {
- logger.error(t.getMessage(), t);
- }
- }
- }
-
- private void draw() {
- File rootDir = new File(statisticsDirectory);
- if (!rootDir.exists()) {
- return;
- }
- File[] dateDirs = rootDir.listFiles();
- for (File dateDir : dateDirs) {
- File[] serviceDirs = dateDir.listFiles();
- for (File serviceDir : serviceDirs) {
- File[] methodDirs = serviceDir.listFiles();
- for (File methodDir : methodDirs) {
- String methodUri = chartsDirectory + "/" + dateDir.getName() + "/" + serviceDir.getName() + "/" + methodDir.getName();
-
- File successFile = new File(methodUri + "/" + SUCCESS + ".png");
- long successModified = successFile.lastModified();
- boolean successChanged = false;
- Map<String, long[]> successData = new HashMap<String, long[]>();
- double[] successSummary = new double[4];
-
- File elapsedFile = new File(methodUri + "/" + ELAPSED + ".png");
- long elapsedModified = elapsedFile.lastModified();
- boolean elapsedChanged = false;
- Map<String, long[]> elapsedData = new HashMap<String, long[]>();
- double[] elapsedSummary = new double[4];
- long elapsedMax = 0;
-
- File[] consumerDirs = methodDir.listFiles();
- for (File consumerDir : consumerDirs) {
- File[] providerDirs = consumerDir.listFiles();
- for (File providerDir : providerDirs) {
- File consumerSuccessFile = new File(providerDir, CONSUMER + "." + SUCCESS);
- File providerSuccessFile = new File(providerDir, PROVIDER + "." + SUCCESS);
- appendData(new File[]{consumerSuccessFile, providerSuccessFile}, successData, successSummary);
- if (consumerSuccessFile.lastModified() > successModified
- || providerSuccessFile.lastModified() > successModified) {
- successChanged = true;
- }
-
- File consumerElapsedFile = new File(providerDir, CONSUMER + "." + ELAPSED);
- File providerElapsedFile = new File(providerDir, PROVIDER + "." + ELAPSED);
- appendData(new File[]{consumerElapsedFile, providerElapsedFile}, elapsedData, elapsedSummary);
- elapsedMax = Math.max(elapsedMax, CountUtils.max(new File(providerDir, CONSUMER + "." + MAX_ELAPSED)));
- elapsedMax = Math.max(elapsedMax, CountUtils.max(new File(providerDir, PROVIDER + "." + MAX_ELAPSED)));
- if (consumerElapsedFile.lastModified() > elapsedModified
- || providerElapsedFile.lastModified() > elapsedModified) {
- elapsedChanged = true;
- }
- }
- }
- if (elapsedChanged) {
- divData(elapsedData, successData);
- elapsedSummary[0] = elapsedMax;
- elapsedSummary[1] = -1;
- elapsedSummary[2] = successSummary[3] == 0 ? 0 : elapsedSummary[3] / successSummary[3];
- elapsedSummary[3] = -1;
- createChart("ms/t", serviceDir.getName(), methodDir.getName(), dateDir.getName(), new String[]{CONSUMER, PROVIDER}, elapsedData, elapsedSummary, elapsedFile.getAbsolutePath());
- }
- if (successChanged) {
- divData(successData, 60);
- successSummary[0] = successSummary[0] / 60;
- successSummary[1] = successSummary[1] / 60;
- successSummary[2] = successSummary[2] / 60;
- createChart("t/s", serviceDir.getName(), methodDir.getName(), dateDir.getName(), new String[]{CONSUMER, PROVIDER}, successData, successSummary, successFile.getAbsolutePath());
- }
- }
- }
- }
- }
-
- private void divData(Map<String, long[]> successMap, long unit) {
- for (long[] success : successMap.values()) {
- for (int i = 0; i < success.length; i++) {
- success[i] = success[i] / unit;
- }
- }
- }
-
- private void divData(Map<String, long[]> elapsedMap, Map<String, long[]> successMap) {
- for (Map.Entry<String, long[]> entry : elapsedMap.entrySet()) {
- long[] elapsed = entry.getValue();
- long[] success = successMap.get(entry.getKey());
- for (int i = 0; i < elapsed.length; i++) {
- elapsed[i] = success[i] == 0 ? 0 : elapsed[i] / success[i];
- }
- }
- }
-
- private void appendData(File[] files, Map<String, long[]> data, double[] summary) {
- for (int i = 0; i < files.length; i++) {
- File file = files[i];
- if (!file.exists()) {
- continue;
- }
- try {
- BufferedReader reader = new BufferedReader(new FileReader(file));
- try {
- int sum = 0;
- int cnt = 0;
- String line;
- while ((line = reader.readLine()) != null) {
- int index = line.indexOf(" ");
- if (index > 0) {
- String key = line.substring(0, index).trim();
- long value = Long.parseLong(line.substring(index + 1).trim());
- long[] values = data.get(key);
- if (values == null) {
- values = new long[files.length];
- data.put(key, values);
- }
- values[i] += value;
- summary[0] = Math.max(summary[0], values[i]);
- summary[1] = summary[1] == 0 ? values[i] : Math.min(summary[1], values[i]);
- sum += value;
- cnt++;
- }
- }
- if (i == 0) {
- summary[3] += sum;
- summary[2] = (summary[2] + (sum / cnt)) / 2;
- }
- } finally {
- reader.close();
- }
- } catch (IOException e) {
- logger.warn(e.getMessage(), e);
- }
- }
- }
-
- public void count(URL statistics) {
- collect(statistics);
- }
-
- public void collect(URL statistics) {
- queue.offer(statistics);
- if (logger.isInfoEnabled()) {
- logger.info("collect statistics: " + statistics);
- }
- }
-
- public List<URL> lookup(URL query) {
- // TODO Auto-generated method stub
- return null;
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/CountUtils.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/CountUtils.java
deleted file mode 100644
index bdda59c..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/CountUtils.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.common;
-
-import com.alibaba.dubbo.common.logger.Logger;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.regex.Pattern;
-
-/**
- * CountUtils
- */
-public class CountUtils {
-
- private static final Logger logger = LoggerFactory.getLogger(CountUtils.class);
-
- private static final Pattern NUMBER_PATTERN = Pattern.compile("\\d+");
-
- private static final int SUM = 0;
-
- private static final int MAX = 1;
-
- private static final int AVG = 2;
-
- public static long sum(File file) {
- return calc(file, SUM);
- }
-
- public static long max(File file) {
- return calc(file, MAX);
- }
-
- public static long avg(File file) {
- return calc(file, AVG);
- }
-
- private static long calc(File file, int op) {
- if (file.exists()) {
- try {
- BufferedReader reader = new BufferedReader(new FileReader(file));
- try {
- int times = 0;
- int count = 0;
- String line;
- while ((line = reader.readLine()) != null) {
- int i = line.indexOf(" ");
- if (i > 0) {
- line = line.substring(i + 1).trim();
- if (NUMBER_PATTERN.matcher(line).matches()) {
- int value = Integer.parseInt(line);
- times++;
- if (op == MAX) {
- count = Math.max(count, value);
- } else {
- count += value;
- }
- }
- }
- }
- if (op == AVG) {
- return count / times;
- }
- return count;
- } finally {
- reader.close();
- }
- } catch (IOException e) {
- logger.warn(e.getMessage(), e);
- }
- }
- return 0;
- }
-
-}
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Menu.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Menu.java
deleted file mode 100644
index ca1cab6..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Menu.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.common;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Menu
- */
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.TYPE})
-public @interface Menu {
-
- String name();
-
- String desc() default "";
-
- int order() default 0;
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/MenuComparator.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/MenuComparator.java
deleted file mode 100644
index 7947942..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/MenuComparator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.common;
-
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.io.Serializable;
-import java.util.Comparator;
-
-/**
- * MenuComparator
- */
-public class MenuComparator implements Comparator<PageHandler>, Serializable {
-
- private static final long serialVersionUID = -3161526932904414029L;
-
- public int compare(PageHandler o1, PageHandler o2) {
- if (o1 == null && o2 == null) {
- return 0;
- }
- if (o1 == null) {
- return -1;
- }
- if (o2 == null) {
- return 1;
- }
- return o1.equals(o2) ? 0 : (o1.getClass().getAnnotation(Menu.class).order()
- > o2.getClass().getAnnotation(Menu.class).order() ? 1 : -1);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Page.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Page.java
deleted file mode 100644
index 44c45bd..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/common/Page.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.common;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Page
- */
-public class Page {
-
- private final String navigation;
-
- private final String title;
-
- private final List<String> columns;
-
- private final List<List<String>> rows;
-
- public Page(String navigation) {
- this(navigation, (String) null, (String[]) null, (List<List<String>>) null);
- }
-
- public Page(String navigation, String title,
- String column, String row) {
- this(navigation, title, column == null ? null : Arrays.asList(new String[]{column}), row == null ? null : stringToList(row));
- }
-
- public Page(String navigation, String title,
- String[] columns, List<List<String>> rows) {
- this(navigation, title, columns == null ? null : Arrays.asList(columns), rows);
- }
-
- public Page(String navigation, String title,
- List<String> columns, List<List<String>> rows) {
- this.navigation = navigation;
- this.title = title;
- this.columns = columns;
- this.rows = rows;
- }
-
- private static List<List<String>> stringToList(String str) {
- List<List<String>> rows = new ArrayList<List<String>>();
- List<String> row = new ArrayList<String>();
- row.add(str);
- rows.add(row);
- return rows;
- }
-
- public String getNavigation() {
- return navigation;
- }
-
- public String getTitle() {
- return title;
- }
-
- public List<String> getColumns() {
- return columns;
- }
-
- public List<List<String>> getRows() {
- return rows;
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/JettyContainer.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/JettyContainer.java
deleted file mode 100644
index 434294e..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/JettyContainer.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.container;
-
-import com.alibaba.dubbo.common.logger.Logger;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubbo.common.utils.ConfigUtils;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.container.Container;
-import com.alibaba.dubbo.monitor.simple.servlet.PageServlet;
-import com.alibaba.dubbo.monitor.simple.servlet.ResourceFilter;
-
-import org.mortbay.jetty.Handler;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.nio.SelectChannelConnector;
-import org.mortbay.jetty.servlet.FilterHolder;
-import org.mortbay.jetty.servlet.ServletHandler;
-import org.mortbay.jetty.servlet.ServletHolder;
-
-/**
- * JettyContainer. (SPI, Singleton, ThreadSafe)
- */
-public class JettyContainer implements Container {
-
- public static final String JETTY_PORT = "dubbo.jetty.port";
- public static final String JETTY_DIRECTORY = "dubbo.jetty.directory";
- public static final String JETTY_PAGES = "dubbo.jetty.page";
- public static final int DEFAULT_JETTY_PORT = 8080;
- private static final Logger logger = LoggerFactory.getLogger(JettyContainer.class);
- SelectChannelConnector connector;
-
- public void start() {
- String serverPort = ConfigUtils.getProperty(JETTY_PORT);
- int port;
- if (serverPort == null || serverPort.length() == 0) {
- port = DEFAULT_JETTY_PORT;
- } else {
- port = Integer.parseInt(serverPort);
- }
- connector = new SelectChannelConnector();
- connector.setPort(port);
- ServletHandler handler = new ServletHandler();
-
- String resources = ConfigUtils.getProperty(JETTY_DIRECTORY);
- if (resources != null && resources.length() > 0) {
- FilterHolder resourceHolder = handler.addFilterWithMapping(ResourceFilter.class, "/*", Handler.DEFAULT);
- resourceHolder.setInitParameter("resources", resources);
- }
-
- ServletHolder pageHolder = handler.addServletWithMapping(PageServlet.class, "/*");
- pageHolder.setInitParameter("pages", ConfigUtils.getProperty(JETTY_PAGES));
- pageHolder.setInitOrder(2);
-
- Server server = new Server();
- server.addConnector(connector);
- server.addHandler(handler);
- try {
- server.start();
- } catch (Exception e) {
- throw new IllegalStateException("Failed to start jetty server on " + NetUtils.getLocalHost() + ":" + port + ", cause: " + e.getMessage(), e);
- }
- }
-
- public void stop() {
- try {
- if (connector != null) {
- connector.close();
- connector = null;
- }
- } catch (Throwable e) {
- logger.error(e.getMessage(), e);
- }
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/RegistryContainer.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/RegistryContainer.java
deleted file mode 100644
index 95de78e..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/container/RegistryContainer.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.container;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.extension.ExtensionLoader;
-import com.alibaba.dubbo.common.utils.ConcurrentHashSet;
-import com.alibaba.dubbo.common.utils.ConfigUtils;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.container.Container;
-import com.alibaba.dubbo.container.spring.SpringContainer;
-import com.alibaba.dubbo.registry.NotifyListener;
-import com.alibaba.dubbo.registry.RegistryService;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * RegistryContainer
- */
-public class RegistryContainer implements Container {
-
- public static final String REGISTRY_ADDRESS = "dubbo.registry.address";
- private static RegistryContainer INSTANCE = null;
- private final Set<String> applications = new ConcurrentHashSet<String>();
- private final Map<String, Set<String>> providerServiceApplications = new ConcurrentHashMap<String, Set<String>>();
- private final Map<String, Set<String>> providerApplicationServices = new ConcurrentHashMap<String, Set<String>>();
- private final Map<String, Set<String>> consumerServiceApplications = new ConcurrentHashMap<String, Set<String>>();
- private final Map<String, Set<String>> consumerApplicationServices = new ConcurrentHashMap<String, Set<String>>();
- private final Set<String> services = new ConcurrentHashSet<String>();
- private final Map<String, List<URL>> serviceProviders = new ConcurrentHashMap<String, List<URL>>();
- private final Map<String, List<URL>> serviceConsumers = new ConcurrentHashMap<String, List<URL>>();
- private RegistryService registry;
-
- public RegistryContainer() {
- INSTANCE = this;
- }
-
- public static RegistryContainer getInstance() {
- if (INSTANCE == null) {
- ExtensionLoader.getExtensionLoader(Container.class).getExtension("registry");
- }
- return INSTANCE;
- }
-
- public RegistryService getRegistry() {
- return registry;
- }
-
- public Set<String> getApplications() {
- return Collections.unmodifiableSet(applications);
- }
-
- 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 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 urls;
- }
-
- 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 urls;
- }
-
- 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>> getServiceConsumers() {
- return Collections.unmodifiableMap(serviceConsumers);
- }
-
- public List<URL> getConsumersByService(String service) {
- List<URL> urls = serviceConsumers.get(service);
- return urls == null ? null : Collections.unmodifiableList(urls);
- }
-
- 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> 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 void start() {
- String url = ConfigUtils.getProperty(REGISTRY_ADDRESS);
- if (url == null || url.length() == 0) {
- throw new IllegalArgumentException("Please set java start argument: -D" + REGISTRY_ADDRESS + "=zookeeper://127.0.0.1:2181");
- }
- registry = (RegistryService) SpringContainer.getContext().getBean("registryService");
- URL subscribeUrl = new URL(Constants.ADMIN_PROTOCOL, NetUtils.getLocalHost(), 0, "",
- Constants.INTERFACE_KEY, Constants.ANY_VALUE,
- Constants.GROUP_KEY, Constants.ANY_VALUE,
- Constants.VERSION_KEY, Constants.ANY_VALUE,
- Constants.CLASSIFIER_KEY, Constants.ANY_VALUE,
- Constants.CATEGORY_KEY, Constants.PROVIDERS_CATEGORY + ","
- + Constants.CONSUMERS_CATEGORY,
- Constants.CHECK_KEY, String.valueOf(false));
- registry.subscribe(subscribeUrl, new NotifyListener() {
- public void notify(List<URL> urls) {
- if (urls == null || urls.size() == 0) {
- return;
- }
- Map<String, List<URL>> proivderMap = new HashMap<String, List<URL>>();
- Map<String, List<URL>> consumerMap = new HashMap<String, List<URL>>();
- for (URL url : urls) {
- String application = url.getParameter(Constants.APPLICATION_KEY);
- if (application != null && application.length() > 0) {
- applications.add(application);
- }
- String service = url.getServiceInterface();
- services.add(service);
- String category = url.getParameter(Constants.CATEGORY_KEY, Constants.DEFAULT_CATEGORY);
- if (Constants.PROVIDERS_CATEGORY.equals(category)) {
- if (Constants.EMPTY_PROTOCOL.equals(url.getProtocol())) {
- serviceProviders.remove(service);
- } else {
- List<URL> list = proivderMap.get(service);
- if (list == null) {
- list = new ArrayList<URL>();
- proivderMap.put(service, list);
- }
- list.add(url);
- if (application != null && application.length() > 0) {
- Set<String> serviceApplications = providerServiceApplications.get(service);
- if (serviceApplications == null) {
- providerServiceApplications.put(service, new ConcurrentHashSet<String>());
- serviceApplications = providerServiceApplications.get(service);
- }
- serviceApplications.add(application);
-
- Set<String> applicationServices = providerApplicationServices.get(application);
- if (applicationServices == null) {
- providerApplicationServices.put(application, new ConcurrentHashSet<String>());
- applicationServices = providerApplicationServices.get(application);
- }
- applicationServices.add(service);
- }
- }
- } else if (Constants.CONSUMERS_CATEGORY.equals(category)) {
- if (Constants.EMPTY_PROTOCOL.equals(url.getProtocol())) {
- serviceConsumers.remove(service);
- } else {
- List<URL> list = consumerMap.get(service);
- if (list == null) {
- list = new ArrayList<URL>();
- consumerMap.put(service, list);
- }
- list.add(url);
- if (application != null && application.length() > 0) {
- Set<String> serviceApplications = consumerServiceApplications.get(service);
- if (serviceApplications == null) {
- consumerServiceApplications.put(service, new ConcurrentHashSet<String>());
- serviceApplications = consumerServiceApplications.get(service);
- }
- serviceApplications.add(application);
-
- Set<String> applicationServices = consumerApplicationServices.get(application);
- if (applicationServices == null) {
- consumerApplicationServices.put(application, new ConcurrentHashSet<String>());
- applicationServices = consumerApplicationServices.get(application);
- }
- applicationServices.add(service);
- }
-
- }
- }
- }
- if (proivderMap != null && proivderMap.size() > 0) {
- serviceProviders.putAll(proivderMap);
- }
- if (consumerMap != null && consumerMap.size() > 0) {
- serviceConsumers.putAll(consumerMap);
- }
- }
- });
- }
-
- public void stop() {
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ApplicationsPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ApplicationsPageHandler.java
deleted file mode 100644
index b86bc14..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ApplicationsPageHandler.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * ApplicationsPageHandler
- */
-@Menu(name = "Applications", desc = "Show application dependencies.", order = 1000)
-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);
-
- 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 dependency</font>" : "<a href=\"dependencies.html?application=" + application + "\">Depends 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 used</font>" : "<a href=\"dependencies.html?application=" + application + "&reverse=true\">Used By(" + afferentSize + ")</a>");
- rows.add(row);
- }
- }
- return new Page("Applications", "Applications (" + rows.size() + ")",
- new String[]{"Application Name:", "Owner", "Providers(" + providersCount + ")", "Consumers(" + consumersCount + ")", "Depends On(" + efferentCount + ")", "Used By(" + afferentCount + ")"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ChartsPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ChartsPageHandler.java
deleted file mode 100644
index 8131eee..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ChartsPageHandler.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.ConfigUtils;
-import com.alibaba.dubbo.monitor.MonitorService;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * ChartsPageHandler
- */
-public class ChartsPageHandler 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.");
- }
- String date = url.getParameter("date");
- if (date == null || date.length() == 0) {
- date = new SimpleDateFormat("yyyyMMdd").format(new Date());
- }
- List<List<String>> rows = new ArrayList<List<String>>();
- String directory = ConfigUtils.getProperty("dubbo.charts.directory");
- File chartsDir = new File(directory);
- String filename = directory + "/" + date + "/" + service;
- File serviceDir = new File(filename);
- if (serviceDir.exists()) {
- File[] methodDirs = serviceDir.listFiles();
- for (File methodDir : methodDirs) {
- String methodUri = chartsDir.getName() + "/" + date + "/" + service + "/" + methodDir.getName() + "/";
- rows.add(toRow(methodDir, methodUri));
- }
- }
- 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> | <a href=\"statistics.html?service=");
- nav.append(service);
- nav.append("&date=");
- nav.append(date);
- nav.append("\">Statistics</a> | Charts > <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='charts.html?service=");
- nav.append(service);
- nav.append("&date=' + this.value;}\" />");
- return new Page(nav.toString(), "Charts (" + rows.size() + ")",
- new String[]{"Method", "Requests per second (QPS)", "Average response time (ms)"}, rows);
- }
-
- private List<String> toRow(File dir, String uri) {
- List<String> row = new ArrayList<String>();
- row.add(dir.getName());
- if (new File(dir, MonitorService.SUCCESS + ".png").exists()) {
- String url = uri + MonitorService.SUCCESS + ".png";
- row.add("<a href=\"" + url + "\" target=\"_blank\"><img src=\"" + url + "\" style=\"width: 100%;\" border=\"0\" /></a>");
- } else {
- row.add("");
- }
- if (new File(dir, MonitorService.ELAPSED + ".png").exists()) {
- String url = uri + MonitorService.ELAPSED + ".png";
- row.add("<a href=\"" + url + "\" target=\"_blank\"><img src=\"" + url + "\" style=\"width: 100%;\" border=\"0\" /></a>");
- } else {
- row.add("");
- }
- return row;
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ClientsPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ClientsPageHandler.java
deleted file mode 100644
index 7c91381..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ClientsPageHandler.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.remoting.exchange.ExchangeChannel;
-import com.alibaba.dubbo.remoting.exchange.ExchangeServer;
-import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ClientsPageHandler
- */
-public class ClientsPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- String port = url.getParameter("port");
- int p = port == null || port.length() == 0 ? 0 : Integer.parseInt(port);
- Collection<ExchangeServer> servers = DubboProtocol.getDubboProtocol().getServers();
- ExchangeServer server = null;
- StringBuilder select = new StringBuilder();
- if (servers != null && servers.size() > 0) {
- if (servers.size() == 1) {
- server = servers.iterator().next();
- String address = server.getUrl().getAddress();
- select.append(" > " + NetUtils.getHostName(address) + "/" + address);
- } else {
- select.append(" > <select onchange=\"window.location.href='clients.html?port=' + this.value;\">");
- for (ExchangeServer s : servers) {
- int sp = s.getUrl().getPort();
- select.append("<option value=\">");
- select.append(sp);
- if (p == 0 && server == null || p == sp) {
- server = s;
- select.append("\" selected=\"selected");
- }
- select.append("\">");
- select.append(s.getUrl().getAddress());
- select.append("</option>");
- }
- select.append("</select>");
- }
- }
- List<List<String>> rows = new ArrayList<List<String>>();
- if (server != null) {
- Collection<ExchangeChannel> channels = server.getExchangeChannels();
- for (ExchangeChannel c : channels) {
- List<String> row = new ArrayList<String>();
- String address = NetUtils.toAddressString(c.getRemoteAddress());
- row.add(NetUtils.getHostName(address) + "/" + address);
- rows.add(row);
- }
- }
- return new Page("<a href=\"servers.html\">Servers</a>" + select.toString() + " > Clients", "Clients (" + rows.size() + ")", new String[]{"Client Address:"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ConsumersPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ConsumersPageHandler.java
deleted file mode 100644
index 35ca333..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ConsumersPageHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ConsumersPageHandler
- */
-public class ConsumersPageHandler implements PageHandler {
-
- 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> consumers = RegistryContainer.getInstance().getConsumersByService(service);
- if (consumers != null && consumers.size() > 0) {
- for (URL u : consumers) {
- List<String> row = new ArrayList<String>();
- String s = u.toFullString();
- row.add(s.replace("&", "&"));
- row.add("<button onclick=\"if(confirm('Confirm unsubscribe consumer?')){window.location.href='unsubscribe.html?service=" + service + "&consumer=" + URL.encode(s) + "';}\">Unsubscribe</button>");
- rows.add(row);
- }
- }
- return new Page("<a href=\"services.html\">Services</a> > " + service
- + " > <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:", "Unsubscribe"}, 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>();
- String s = u.toFullString();
- row.add(s.replace("&", "&"));
- row.add("<button onclick=\"if(confirm('Confirm unsubscribe consumer?')){window.location.href='unsubscribe.html?host=" + host + "&consumer=" + URL.encode(s) + "';}\">Unsubscribe</button>");
- rows.add(row);
- }
- }
- return new Page("<a href=\"hosts.html\">Hosts</a> > " + NetUtils.getHostName(host) + "/" + host + " > <a href=\"providers.html?host=" + host + "\">Providers</a> | Consumers", "Consumers (" + rows.size() + ")",
- new String[]{"Consumer URL:", "Unsubscribe"}, 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>();
- String s = u.toFullString();
- row.add(s.replace("&", "&"));
- row.add("<button onclick=\"if(confirm('Confirm unsubscribe consumer?')){window.location.href='unsubscribe.html?application=" + application + "&consumer=" + URL.encode(s) + "';}\">Unsubscribe</button>");
- rows.add(row);
- }
- }
- return new Page("<a href=\"applications.html\">Applications</a> > " + application + " > <a href=\"providers.html?application=" + application + "\">Providers</a> | Consumers | <a href=\"dependencies.html?application=" + application + "\">Depends On</a> | <a href=\"dependencies.html?application=" + application + "&reverse=true\">Used By</a>", "Consumers (" + rows.size() + ")",
- new String[]{"Consumer URL:", "Unsubscribe"}, rows);
- } else {
- throw new IllegalArgumentException("Please input service or host or application parameter.");
- }
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/DependenciesPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/DependenciesPageHandler.java
deleted file mode 100644
index f45ac8c..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/DependenciesPageHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * DependenciesPageHandler
- */
-public class DependenciesPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- String application = url.getParameter("application");
- if (application == null || application.length() == 0) {
- throw new IllegalArgumentException("Please input application parameter.");
- }
- boolean reverse = url.getParameter("reverse", false);
- List<List<String>> rows = new ArrayList<List<String>>();
- Set<String> directly = RegistryContainer.getInstance().getDependencies(application, reverse);
- Set<String> indirectly = new HashSet<String>();
- appendDependency(rows, reverse, application, 0, new HashSet<String>(), indirectly);
- indirectly.remove(application);
- return new Page("<a href=\"applications.html\">Applications</a> > " + application +
- " > <a href=\"providers.html?application=" + application + "\">Providers</a> | <a href=\"consumers.html?application=" + application + "\">Consumers</a> | " +
- (reverse ? "<a href=\"dependencies.html?application=" + application + "\">Depends On</a> | Used By"
- : "Depends On | <a href=\"dependencies.html?application=" + application + "&reverse=true\">Used By</a>"), (reverse ? "Used By" : "Depends On") + " (" + directly.size() + "/" + indirectly.size() + ")", new String[]{"Application Name:"}, rows);
- }
-
- private void appendDependency(List<List<String>> rows, boolean reverse, String application, int level, Set<String> appended, Set<String> indirectly) {
- List<String> row = new ArrayList<String>();
- StringBuilder buf = new StringBuilder();
- if (level > 0) {
- for (int i = 0; i < level; i++) {
- buf.append(" |");
- }
- buf.append(reverse ? "<-- " : "--> ");
- }
- boolean end = false;
- if (level > 5) {
- buf.append(" <font color=\"blue\">More...</font>");
- end = true;
- } else {
- buf.append(application);
- if (appended.contains(application)) {
- buf.append(" <font color=\"red\">(Cycle)</font>");
- end = true;
- }
- }
- row.add(buf.toString());
- rows.add(row);
- if (end) {
- return;
- }
-
- appended.add(application);
- indirectly.add(application);
- Set<String> dependencies = RegistryContainer.getInstance().getDependencies(application, reverse);
- if (dependencies != null && dependencies.size() > 0) {
- for (String dependency : dependencies) {
- appendDependency(rows, reverse, dependency, level + 1, appended, indirectly);
- }
- }
- appended.remove(application);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HomePageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HomePageHandler.java
deleted file mode 100644
index cdb17a0..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HomePageHandler.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.extension.ExtensionLoader;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.monitor.simple.servlet.PageServlet;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * HomePageHandler
- */
-@Menu(name = "Home", desc = "Home page.", order = Integer.MIN_VALUE)
-public class HomePageHandler implements PageHandler {
-
- public Page handle(URL url) {
- List<List<String>> rows = new ArrayList<List<String>>();
- for (PageHandler handler : PageServlet.getInstance().getMenus()) {
- String uri = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler);
- Menu menu = handler.getClass().getAnnotation(Menu.class);
- List<String> row = new ArrayList<String>();
- row.add("<a href=\"" + uri + ".html\">" + menu.name() + "</a>");
- row.add(menu.desc());
- rows.add(row);
- }
- return new Page("Home", "Menus", new String[]{"Menu Name", "Menu Desc"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HostsPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HostsPageHandler.java
deleted file mode 100644
index 96cbb69..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/HostsPageHandler.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * HostsPageHandler
- */
-@Menu(name = "Hosts", desc = "Show provider and consumer hosts", order = 3000)
-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);
- 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);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/LogPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/LogPageHandler.java
deleted file mode 100644
index bdc04d3..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/LogPageHandler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import org.apache.log4j.Appender;
-import org.apache.log4j.FileAppender;
-import org.apache.log4j.Level;
-import org.apache.log4j.LogManager;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.List;
-
-/**
- * LogPageHandler
- */
-@Menu(name = "Log", desc = "Show system log.", order = Integer.MAX_VALUE - 11000)
-public class LogPageHandler implements PageHandler {
-
- private static final int SHOW_LOG_LENGTH = 30000;
-
- private File file;
-
- @SuppressWarnings("unchecked")
- public LogPageHandler() {
- try {
- org.apache.log4j.Logger logger = LogManager.getRootLogger();
- if (logger != null) {
- Enumeration<Appender> appenders = logger.getAllAppenders();
- if (appenders != null) {
- while (appenders.hasMoreElements()) {
- Appender appender = appenders.nextElement();
- if (appender instanceof FileAppender) {
- FileAppender fileAppender = (FileAppender) appender;
- String filename = fileAppender.getFile();
- file = new File(filename);
- break;
- }
- }
- }
- }
- } catch (Throwable t) {
- }
- }
-
- public Page handle(URL url) {
- long size = 0;
- String content = "";
- String modified = "Not exist";
- if (file != null && file.exists()) {
- try {
- FileInputStream fis = new FileInputStream(file);
- FileChannel channel = fis.getChannel();
- size = channel.size();
- ByteBuffer bb;
- if (size <= SHOW_LOG_LENGTH) {
- bb = ByteBuffer.allocate((int) size);
- channel.read(bb, 0);
- } else {
- int pos = (int) (size - SHOW_LOG_LENGTH);
- bb = ByteBuffer.allocate(SHOW_LOG_LENGTH);
- channel.read(bb, pos);
- }
- bb.flip();
- content = new String(bb.array()).replace("<", "<")
- .replace(">", ">").replace("\n", "<br/><br/>");
- modified = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- .format(new Date(file.lastModified()));
- } catch (IOException e) {
- }
- }
- Level level = LogManager.getRootLogger().getLevel();
- List<List<String>> rows = new ArrayList<List<String>>();
- List<String> row = new ArrayList<String>();
- row.add(content);
- rows.add(row);
- return new Page("Log", "Log", new String[]{(file == null ? "" : file.getName()) + ", " + size + " bytes, " + modified + ", " + level}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ProvidersPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ProvidersPageHandler.java
deleted file mode 100644
index 159e10e..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ProvidersPageHandler.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ProvidersPageHandler
- */
-public class ProvidersPageHandler implements PageHandler {
-
- 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.");
- }
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegisteredPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegisteredPageHandler.java
deleted file mode 100644
index 08d094f..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegisteredPageHandler.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.registry.Registry;
-import com.alibaba.dubbo.registry.support.AbstractRegistry;
-import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-/**
- * RegisteredPageHandler
- */
-public class RegisteredPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- String registryAddress = url.getParameter("registry", "");
- List<List<String>> rows = new ArrayList<List<String>>();
- Collection<Registry> registries = AbstractRegistryFactory.getRegistries();
- StringBuilder select = new StringBuilder();
- Registry registry = null;
- if (registries != null && registries.size() > 0) {
- if (registries.size() == 1) {
- registry = registries.iterator().next();
- select.append(" > " + registry.getUrl().getAddress());
- } else {
- select.append(" > <select onchange=\"window.location.href='registered.html?registry=' + this.value;\">");
- for (Registry r : registries) {
- String sp = r.getUrl().getAddress();
- select.append("<option value=\">");
- select.append(sp);
- if (((registryAddress == null || registryAddress.length() == 0) && registry == null)
- || registryAddress.equals(sp)) {
- registry = r;
- select.append("\" selected=\"selected");
- }
- select.append("\">");
- select.append(sp);
- select.append("</option>");
- }
- select.append("</select>");
- }
- }
- if (registry instanceof AbstractRegistry) {
- Set<URL> services = ((AbstractRegistry) registry).getRegistered();
- if (services != null && services.size() > 0) {
- for (URL u : services) {
- List<String> row = new ArrayList<String>();
- row.add(u.toFullString().replace("<", "<").replace(">", ">"));
- rows.add(row);
- }
- }
- }
- return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " > Registered | <a href=\"subscribed.html?registry=" + registryAddress + "\">Subscribed</a>", "Registered (" + rows.size() + ")",
- new String[]{"Provider URL:"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegistriesPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegistriesPageHandler.java
deleted file mode 100644
index 30d472a..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/RegistriesPageHandler.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.registry.Registry;
-import com.alibaba.dubbo.registry.support.AbstractRegistry;
-import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * RegistriesPageHandler
- */
-@Menu(name = "Registries", desc = "Show connected registries.", order = 10000)
-public class RegistriesPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- List<List<String>> rows = new ArrayList<List<String>>();
- Collection<Registry> registries = AbstractRegistryFactory.getRegistries();
- int registeredCount = 0;
- int subscribedCount = 0;
- if (registries != null && registries.size() > 0) {
- for (Registry registry : registries) {
- String server = registry.getUrl().getAddress();
- List<String> row = new ArrayList<String>();
- row.add(NetUtils.getHostName(server) + "/" + server);
- if (registry.isAvailable()) {
- row.add("<font color=\"green\">Connected</font>");
- } else {
- row.add("<font color=\"red\">Disconnected</font>");
- }
- int registeredSize = 0;
- int subscribedSize = 0;
- if (registry instanceof AbstractRegistry) {
- registeredSize = ((AbstractRegistry) registry).getRegistered().size();
- registeredCount += registeredSize;
- subscribedSize = ((AbstractRegistry) registry).getSubscribed().size();
- subscribedCount += subscribedSize;
- }
- row.add("<a href=\"registered.html?registry=" + server + "\">Registered(" + registeredSize + ")</a>");
- row.add("<a href=\"subscribed.html?registry=" + server + "\">Subscribed(" + subscribedSize + ")</a>");
- rows.add(row);
- }
- }
- return new Page("Registries", "Registries (" + rows.size() + ")",
- new String[]{"Registry Address:", "Status", "Registered(" + registeredCount + ")", "Subscribed(" + subscribedCount + ")"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServersPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServersPageHandler.java
deleted file mode 100644
index 1c2aac9..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServersPageHandler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.remoting.exchange.ExchangeServer;
-import com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * ServersPageHandler
- */
-@Menu(name = "Servers", desc = "Show exported service servers.", order = 14000)
-public class ServersPageHandler implements PageHandler {
-
- 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);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServicesPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServicesPageHandler.java
deleted file mode 100644
index e393cb6..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/ServicesPageHandler.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/**
- * ServicesPageHandler
- */
-@Menu(name = "Services", desc = "Show registered services.", order = 2000)
-public class ServicesPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- Set<String> services = RegistryContainer.getInstance().getServices();
- List<List<String>> rows = new ArrayList<List<String>>();
- int providerCount = 0;
- int consumerCount = 0;
- if (services != null && services.size() > 0) {
- for (String service : services) {
- List<URL> providers = RegistryContainer.getInstance().getProvidersByService(service);
- int providerSize = providers == null ? 0 : providers.size();
- providerCount += providerSize;
- List<URL> consumers = RegistryContainer.getInstance().getConsumersByService(service);
- int consumerSize = consumers == null ? 0 : consumers.size();
- consumerCount += consumerSize;
- List<String> row = new ArrayList<String>();
- row.add(service);
- if (providerSize > 0 || consumerSize > 0) {
- if (providerSize > 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>");
- row.add(consumerSize == 0 ? "<font color=\"blue\">No consumer</a>" : "<a href=\"consumers.html?service=" + service + "\">Consumers(" + consumerSize + ")</a>");
- row.add("<a href=\"statistics.html?service=" + service + "\">Statistics</a>");
- row.add("<a href=\"charts.html?service=" + service + "\">Charts</a>");
- rows.add(row);
- }
- }
- }
- return new Page("Services", "Services (" + rows.size() + ")",
- new String[]{"Service Name:", "Application", "Owner", "Providers(" + providerCount + ")", "Consumers(" + consumerCount + ")", "Statistics", "Charts"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatisticsPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatisticsPageHandler.java
deleted file mode 100644
index ff00b52..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatisticsPageHandler.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.ConfigUtils;
-import com.alibaba.dubbo.monitor.MonitorService;
-import com.alibaba.dubbo.monitor.simple.common.CountUtils;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.io.File;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * StatisticsPageHandler
- */
-public class StatisticsPageHandler 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.");
- }
- 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 = ConfigUtils.getProperty("dubbo.statistics.directory");
- 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);
- }
-
- private long[] newStatistics() {
- return new long[10];
- }
-
- private void appendStatistics(File providerDir, long[] statistics) {
- statistics[0] += CountUtils.sum(new File(providerDir, MonitorService.CONSUMER + "." + MonitorService.SUCCESS));
- statistics[1] += CountUtils.sum(new File(providerDir, MonitorService.PROVIDER + "." + MonitorService.SUCCESS));
- statistics[2] += CountUtils.sum(new File(providerDir, MonitorService.CONSUMER + "." + MonitorService.FAILURE));
- statistics[3] += CountUtils.sum(new File(providerDir, MonitorService.PROVIDER + "." + MonitorService.FAILURE));
- statistics[4] += CountUtils.sum(new File(providerDir, MonitorService.CONSUMER + "." + MonitorService.ELAPSED));
- statistics[5] += CountUtils.sum(new File(providerDir, MonitorService.PROVIDER + "." + MonitorService.ELAPSED));
- statistics[6] = Math.max(statistics[6], CountUtils.max(new File(providerDir, MonitorService.CONSUMER + "." + MonitorService.MAX_ELAPSED)));
- statistics[7] = Math.max(statistics[7], CountUtils.max(new File(providerDir, MonitorService.PROVIDER + "." + MonitorService.MAX_ELAPSED)));
- statistics[8] = Math.max(statistics[8], CountUtils.max(new File(providerDir, MonitorService.CONSUMER + "." + MonitorService.MAX_CONCURRENT)));
- statistics[9] = Math.max(statistics[9], CountUtils.max(new File(providerDir, MonitorService.PROVIDER + "." + MonitorService.MAX_CONCURRENT)));
- }
-
- private List<String> toRow(String name, long[] statistics) {
- List<String> row = new ArrayList<String>();
- row.add(name);
- row.add(String.valueOf(statistics[0]) + " --> " + String.valueOf(statistics[1]));
- row.add(String.valueOf(statistics[2]) + " --> " + String.valueOf(statistics[3]));
- row.add(String.valueOf(statistics[0] == 0 ? 0 : statistics[4] / statistics[0])
- + " --> " + String.valueOf(statistics[1] == 0 ? 0 : statistics[5] / statistics[1]));
- row.add(String.valueOf(statistics[6]) + " --> " + String.valueOf(statistics[7]));
- row.add(String.valueOf(statistics[8]) + " --> " + String.valueOf(statistics[9]));
- return row;
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatusPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatusPageHandler.java
deleted file mode 100644
index 5189bac..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/StatusPageHandler.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.extension.ExtensionLoader;
-import com.alibaba.dubbo.common.status.Status;
-import com.alibaba.dubbo.common.status.StatusChecker;
-import com.alibaba.dubbo.common.status.support.StatusUtils;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * StatusPageHandler
- */
-@Menu(name = "Status", desc = "Show system status.", order = Integer.MAX_VALUE - 12000)
-public class StatusPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- List<List<String>> rows = new ArrayList<List<String>>();
- Set<String> names = ExtensionLoader.getExtensionLoader(StatusChecker.class).getSupportedExtensions();
- Map<String, Status> statuses = new HashMap<String, Status>();
- for (String name : names) {
- StatusChecker checker = ExtensionLoader.getExtensionLoader(StatusChecker.class).getExtension(name);
- List<String> row = new ArrayList<String>();
- row.add(name);
- Status status = checker.check();
- if (status != null && !Status.Level.UNKNOWN.equals(status.getLevel())) {
- statuses.put(name, status);
- row.add(getLevelHtml(status.getLevel()));
- row.add(status.getMessage());
- rows.add(row);
- }
- }
- Status status = StatusUtils.getSummaryStatus(statuses);
- if ("status".equals(url.getPath())) {
- return new Page("", "", "", status.getLevel().toString());
- } else {
- List<String> row = new ArrayList<String>();
- row.add("summary");
- row.add(getLevelHtml(status.getLevel()));
- row.add("<a href=\"/status\" target=\"_blank\">summary</a>");
- rows.add(row);
- return new Page("Status (<a href=\"/status\" target=\"_blank\">summary</a>)", "Status", new String[]{"Name", "Status", "Description"}, rows);
- }
- }
-
- private String getLevelHtml(Status.Level level) {
- return "<font color=\"" + getLevelColor(level) + "\">" + level.name() + "</font>";
- }
-
- private String getLevelColor(Status.Level level) {
- if (level == Status.Level.OK) {
- return "green";
- } else if (level == Status.Level.ERROR) {
- return "red";
- } else if (level == Status.Level.WARN) {
- return "yellow";
- }
- return "gray";
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SubscribedPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SubscribedPageHandler.java
deleted file mode 100644
index 0863ede..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SubscribedPageHandler.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.registry.Registry;
-import com.alibaba.dubbo.registry.support.AbstractRegistry;
-import com.alibaba.dubbo.registry.support.AbstractRegistryFactory;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-
-/**
- * SubscribedPageHandler
- */
-public class SubscribedPageHandler implements PageHandler {
-
- public Page handle(URL url) {
- String registryAddress = url.getParameter("registry", "");
- List<List<String>> rows = new ArrayList<List<String>>();
- Collection<Registry> registries = AbstractRegistryFactory.getRegistries();
- StringBuilder select = new StringBuilder();
- Registry registry = null;
- if (registries != null && registries.size() > 0) {
- if (registries.size() == 1) {
- registry = registries.iterator().next();
- select.append(" > " + registry.getUrl().getAddress());
- } else {
- select.append(" > <select onchange=\"window.location.href='subscribed.html?registry=' + this.value;\">");
- for (Registry r : registries) {
- String sp = r.getUrl().getAddress();
- select.append("<option value=\">");
- select.append(sp);
- if (((registryAddress == null || registryAddress.length() == 0) && registry == null)
- || registryAddress.equals(sp)) {
- registry = r;
- select.append("\" selected=\"selected");
- }
- select.append("\">");
- select.append(sp);
- select.append("</option>");
- }
- select.append("</select>");
- }
- }
- if (registry instanceof AbstractRegistry) {
- Set<URL> services = ((AbstractRegistry) registry).getSubscribed().keySet();
- if (services != null && services.size() > 0) {
- for (URL u : services) {
- List<String> row = new ArrayList<String>();
- row.add(u.toFullString().replace("<", "<").replace(">", ">"));
- rows.add(row);
- }
- }
- }
- return new Page("<a href=\"registries.html\">Registries</a>" + select.toString() + " > <a href=\"registered.html?registry=" + registryAddress + "\">Registered</a> | Subscribed", "Subscribed (" + rows.size() + ")",
- new String[]{"Consumer URL:"}, rows);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SystemPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SystemPageHandler.java
deleted file mode 100644
index 4043c3b..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/SystemPageHandler.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.Version;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-import java.lang.management.ManagementFactory;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * SystemPageHandler
- */
-@Menu(name = "System", desc = "Show system environment information.", order = Integer.MAX_VALUE - 10000)
-public class SystemPageHandler implements PageHandler {
-
- private static final long SECOND = 1000;
- private static final long MINUTE = 60 * SECOND;
- private static final long HOUR = 60 * MINUTE;
- private static final long DAY = 24 * HOUR;
-
- public Page handle(URL url) {
- List<List<String>> rows = new ArrayList<List<String>>();
- List<String> row;
-
- row = new ArrayList<String>();
- row.add("Version");
- row.add(Version.getVersion(SystemPageHandler.class, "2.0.0"));
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("Host");
- String address = NetUtils.getLocalHost();
- row.add(NetUtils.getHostName(address) + "/" + address);
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("OS");
- row.add(System.getProperty("os.name") + " " + System.getProperty("os.version"));
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("JVM");
- row.add(System.getProperty("java.runtime.name") + " " + System.getProperty("java.runtime.version") + ",<br/>" + System.getProperty("java.vm.name") + " " + System.getProperty("java.vm.version") + " " + System.getProperty("java.vm.info", ""));
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("CPU");
- row.add(System.getProperty("os.arch", "") + ", " + String.valueOf(Runtime.getRuntime().availableProcessors()) + " cores");
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("Locale");
- row.add(Locale.getDefault().toString() + "/" + System.getProperty("file.encoding"));
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("Uptime");
- row.add(formatUptime(ManagementFactory.getRuntimeMXBean().getUptime()));
- rows.add(row);
-
- row = new ArrayList<String>();
- row.add("Time");
- row.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS Z").format(new Date()));
- rows.add(row);
-
- return new Page("System", "System", new String[]{
- "Property", "Value"}, rows);
- }
-
- private String formatUptime(long uptime) {
- StringBuilder buf = new StringBuilder();
- if (uptime > DAY) {
- long days = (uptime - uptime % DAY) / DAY;
- buf.append(days);
- buf.append(" Days");
- uptime = uptime % DAY;
- }
- if (uptime > HOUR) {
- long hours = (uptime - uptime % HOUR) / HOUR;
- if (buf.length() > 0) {
- buf.append(", ");
- }
- buf.append(hours);
- buf.append(" Hours");
- uptime = uptime % HOUR;
- }
- if (uptime > MINUTE) {
- long minutes = (uptime - uptime % MINUTE) / MINUTE;
- if (buf.length() > 0) {
- buf.append(", ");
- }
- buf.append(minutes);
- buf.append(" Minutes");
- uptime = uptime % MINUTE;
- }
- if (uptime > SECOND) {
- long seconds = (uptime - uptime % SECOND) / SECOND;
- if (buf.length() > 0) {
- buf.append(", ");
- }
- buf.append(seconds);
- buf.append(" Seconds");
- uptime = uptime % SECOND;
- }
- if (uptime > 0) {
- if (buf.length() > 0) {
- buf.append(", ");
- }
- buf.append(uptime);
- buf.append(" Milliseconds");
- }
- return buf.toString();
- }
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnregisterPageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnregisterPageHandler.java
deleted file mode 100644
index d8b7c97..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnregisterPageHandler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-
-/**
- * UnregisterPageHandler
- */
-public class UnregisterPageHandler implements PageHandler {
-
- 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>");
- }
-
-}
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnsubscribePageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnsubscribePageHandler.java
deleted file mode 100644
index 655ba6c..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/pages/UnsubscribePageHandler.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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 com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-import com.alibaba.dubbo.monitor.simple.container.RegistryContainer;
-import com.alibaba.dubbo.monitor.simple.servlet.PageHandler;
-import com.alibaba.dubbo.registry.NotifyListener;
-
-import java.util.List;
-
-/**
- * UnsubscribePageHandler
- */
-public class UnsubscribePageHandler implements PageHandler {
-
- public Page handle(URL url) {
- String consumer = url.getParameterAndDecoded("consumer");
- if (consumer == null || consumer.length() == 0) {
- throw new IllegalArgumentException("Please input consumer parameter.");
- }
- URL consumerUrl = URL.valueOf(consumer);
- RegistryContainer.getInstance().getRegistry().unsubscribe(consumerUrl, NotifyListenerAdapter.NOTIFY_LISTENER);
- 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=" + consumerUrl.getServiceInterface();
- }
- return new Page("<script type=\"text/javascript\">window.location.href=\"consumers.html?" + parameter + "\";</script>");
- }
-
- private static class NotifyListenerAdapter implements NotifyListener {
-
- public static final NotifyListener NOTIFY_LISTENER = new NotifyListenerAdapter();
-
- private NotifyListenerAdapter() {
- }
-
- public void notify(List<URL> urls) {
- }
-
- }
-
-}
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageHandler.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageHandler.java
deleted file mode 100644
index 56d919d..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageHandler.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.servlet;
-
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.extension.SPI;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-
-/**
- * PageHandler
- */
-@SPI
-public interface PageHandler {
-
- /**
- * Handle the page.
- *
- * @param url
- * @return the page.
- */
- Page handle(URL url);
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageServlet.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageServlet.java
deleted file mode 100644
index 13c3205..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/PageServlet.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.servlet;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.extension.ExtensionLoader;
-import com.alibaba.dubbo.common.logger.Logger;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubbo.common.utils.StringUtils;
-import com.alibaba.dubbo.monitor.simple.common.Menu;
-import com.alibaba.dubbo.monitor.simple.common.MenuComparator;
-import com.alibaba.dubbo.monitor.simple.common.Page;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * PageServlet
- */
-public class PageServlet extends HttpServlet {
-
- protected static final Logger logger = LoggerFactory.getLogger(PageServlet.class);
- private static final long serialVersionUID = -8370312705453328501L;
- private static PageServlet INSTANCE;
- protected final Random random = new Random();
- protected final Map<String, PageHandler> pages = new ConcurrentHashMap<String, PageHandler>();
- protected final List<PageHandler> menus = new ArrayList<PageHandler>();
-
- public static PageServlet getInstance() {
- return INSTANCE;
- }
-
- public List<PageHandler> getMenus() {
- return Collections.unmodifiableList(menus);
- }
-
- @Override
- public void init() throws ServletException {
- super.init();
- INSTANCE = this;
- String config = getServletConfig().getInitParameter("pages");
- Collection<String> names;
- if (config != null && config.length() > 0) {
- names = Arrays.asList(Constants.COMMA_SPLIT_PATTERN.split(config));
- } else {
- names = ExtensionLoader.getExtensionLoader(PageHandler.class).getSupportedExtensions();
- }
- for (String name : names) {
- PageHandler handler = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtension(name);
- pages.put(ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler), handler);
- Menu menu = handler.getClass().getAnnotation(Menu.class);
- if (menu != null) {
- menus.add(handler);
- }
- }
- Collections.sort(menus, new MenuComparator());
- }
-
- @Override
- protected final void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doPost(request, response);
- }
-
- @Override
- protected final void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- if (!response.isCommitted()) {
- PrintWriter writer = response.getWriter();
- String uri = request.getRequestURI();
- boolean isHtml = false;
- if (uri == null || uri.length() == 0 || "/".equals(uri)) {
- uri = "index";
- isHtml = true;
- } else {
- if (uri.startsWith("/")) {
- uri = uri.substring(1);
- }
- if (uri.endsWith(".html")) {
- uri = uri.substring(0, uri.length() - ".html".length());
- isHtml = true;
- }
- }
- if (uri.endsWith("favicon.ico")) {
- response.sendError(HttpServletResponse.SC_NOT_FOUND);
- return;
- }
- ExtensionLoader<PageHandler> pageHandlerLoader = ExtensionLoader.getExtensionLoader(PageHandler.class);
- PageHandler pageHandler = pageHandlerLoader.hasExtension(uri) ? pageHandlerLoader.getExtension(uri) : null;
- if (isHtml) {
- writer.println("<html><head><title>Dubbo</title>");
- writer.println("<style type=\"text/css\">html, body {margin: 10;padding: 0;background-color: #6D838C;font-family: Arial, Verdana;font-size: 12px;color: #FFFFFF;text-align: center;vertical-align: middle;word-break: break-all; } table {width: 90%; margin: 0px auto;border-collapse: collapse;border: 8px solid #FFFFFF; } thead tr {background-color: #253c46; } tbody tr {background-color: #8da5af; } th {padding-top: 4px;padding-bottom: 4px;font-size: 14px;height: 20px; } td {mar [...]
- writer.println("</head><body>");
- }
- if (pageHandler != null) {
- Page page = null;
- try {
- String query = request.getQueryString();
- page = pageHandler.handle(URL.valueOf(request.getRequestURL().toString()
- + (query == null || query.length() == 0 ? "" : "?" + query)));
- } catch (Throwable t) {
- logger.warn(t.getMessage(), t);
- String msg = t.getMessage();
- if (msg == null) {
- msg = StringUtils.toString(t);
- }
- if (isHtml) {
- writer.println("<table>");
- writer.println("<thead>");
- writer.println(" <tr>");
- writer.println(" <th>Error</th>");
- writer.println(" </tr>");
- writer.println("</thead>");
- writer.println("<tbody>");
- writer.println(" <tr>");
- writer.println(" <td>");
- writer.println(" " + msg.replace("<", "<").replace(">", "<").replace("\n", "<br/>"));
- writer.println(" </td>");
- writer.println(" </tr>");
- writer.println("</tbody>");
- writer.println("</table>");
- writer.println("<br/>");
- } else {
- writer.println(msg);
- }
- }
- if (page != null) {
- if (isHtml) {
- String nav = page.getNavigation();
- if (nav == null || nav.length() == 0) {
- nav = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(pageHandler);
- nav = nav.substring(0, 1).toUpperCase() + nav.substring(1);
- }
- if (!"index".equals(uri)) {
- nav = "<a href=\"/\">Home</a> > " + nav;
- }
- writeMenu(request, writer, nav);
- writeTable(writer, page.getTitle(), page.getColumns(),
- page.getRows());
- } else {
- if (page.getRows().size() > 0 && page.getRows().get(0).size() > 0) {
- writer.println(page.getRows().get(0).get(0));
- }
- }
- }
- } else {
- if (isHtml) {
- writer.println("<table>");
- writer.println("<thead>");
- writer.println(" <tr>");
- writer.println(" <th>Error</th>");
- writer.println(" </tr>");
- writer.println("</thead>");
- writer.println("<tbody>");
- writer.println(" <tr>");
- writer.println(" <td>");
- writer.println(" Not found " + uri + " page. Please goto <a href=\"/\">Home</a> page.");
- writer.println(" </td>");
- writer.println(" </tr>");
- writer.println("</tbody>");
- writer.println("</table>");
- writer.println("<br/>");
- } else {
- writer.println("Not found " + uri + " page.");
- }
- }
- if (isHtml) {
- writer.println("</body></html>");
- }
- writer.flush();
- }
- }
-
- protected final void writeMenu(HttpServletRequest request, PrintWriter writer, String nav) {
- writer.println("<table>");
- writer.println("<thead>");
- writer.println(" <tr>");
- for (PageHandler handler : menus) {
- String uri = ExtensionLoader.getExtensionLoader(PageHandler.class).getExtensionName(handler);
- Menu menu = handler.getClass().getAnnotation(Menu.class);
- writer.println(" <th><a href=\"" + uri + ".html\">" + menu.name() + "</a></th>");
- }
- writer.println(" </tr>");
- writer.println("</thead>");
- writer.println("<tbody>");
- writer.println(" <tr>");
- writer.println(" <td style=\"text-align: left\" colspan=\"" + menus.size() + "\">");
- writer.println(nav);
- writer.println(" </td>");
- writer.println(" </tr>");
- writer.println("</tbody>");
- writer.println("</table>");
- writer.println("<br/>");
- }
-
- protected final void writeTable(PrintWriter writer, String title, List<String> columns,
- List<List<String>> rows) {
- int n = random.nextInt();
- int c = (columns == null ? (rows == null || rows.size() == 0 ? 0 : rows.get(0).size())
- : columns.size());
- int r = (rows == null ? 0 : rows.size());
- writer.println("<table>");
- writer.println("<thead>");
- writer.println(" <tr>");
- writer.println(" <th colspan=\"" + c + "\">" + title + "</th>");
- writer.println(" </tr>");
- if (columns != null && columns.size() > 0) {
- writer.println(" <tr>");
- for (int i = 0; i < columns.size(); i++) {
- String col = columns.get(i);
- if (col.endsWith(":")) {
- col += " <input type=\"text\" id=\"in_"
- + n
- + "_"
- + i
- + "\" onkeyup=\"for (var i = 0; i < "
- + r
- + "; i ++) { var m = true; for (var j = 0; j < "
- + columns.size()
- + "; j ++) { if (document.getElementById('in_"
- + n
- + "_' + j)) { var iv = document.getElementById('in_"
- + n
- + "_' + j).value; var tv = document.getElementById('td_"
- + n
- + "_' + i + '_' + j).innerHTML; if (iv.length > 0 && (tv.length < iv.length || tv.indexOf(iv) == -1)) { m = false; break; } } } document.getElementById('tr_"
- + n
- + "_' + i).style.display = (m ? '' : 'none');}\" sytle=\"width: 100%\" />";
- }
- writer.println(" <td>" + col + "</td>");
- }
- writer.println(" </tr>");
- }
- writer.println("</thead>");
- if (rows != null && rows.size() > 0) {
- writer.println("<tbody>");
- int i = 0;
- for (Collection<String> row : rows) {
- writer.println(" <tr id=\"tr_" + n + "_" + i + "\">");
- int j = 0;
- for (String col : row) {
- writer.println(" <td id=\"td_" + n + "_" + i + "_" + j
- + "\" style=\"display: ;\">" + col + "</td>");
- j++;
- }
- writer.println(" </tr>");
- i++;
- }
- writer.println("</tbody>");
- }
- writer.println("</table>");
- writer.println("<br/>");
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/ResourceFilter.java b/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/ResourceFilter.java
deleted file mode 100644
index 86ad1df..0000000
--- a/dubbo-monitor-simple/src/main/java/com/alibaba/dubbo/monitor/simple/servlet/ResourceFilter.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.servlet;
-
-import com.alibaba.dubbo.common.Constants;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * ResourceServlet
- */
-public class ResourceFilter implements Filter {
-
- private static final String CLASSPATH_PREFIX = "classpath:";
-
- private final long start = System.currentTimeMillis();
-
- private final List<String> resources = new ArrayList<String>();
-
- public void init(FilterConfig filterConfig) throws ServletException {
- String config = filterConfig.getInitParameter("resources");
- if (config != null && config.length() > 0) {
- String[] configs = Constants.COMMA_SPLIT_PATTERN.split(config);
- for (String c : configs) {
- if (c != null && c.length() > 0) {
- c = c.replace('\\', '/');
- if (c.endsWith("/")) {
- c = c.substring(0, c.length() - 1);
- }
- resources.add(c);
- }
- }
- }
- }
-
- public void destroy() {
- }
-
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
- throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) req;
- HttpServletResponse response = (HttpServletResponse) res;
- if (response.isCommitted()) {
- return;
- }
- String uri = request.getRequestURI();
- String context = request.getContextPath();
- if (uri.endsWith("/favicon.ico")) {
- uri = "/favicon.ico";
- } else if (context != null && !"/".equals(context)) {
- uri = uri.substring(context.length());
- }
- if (!uri.startsWith("/")) {
- uri = "/" + uri;
- }
- long lastModified = getLastModified(uri);
- long since = request.getDateHeader("If-Modified-Since");
- if (since >= lastModified) {
- response.sendError(HttpServletResponse.SC_NOT_MODIFIED);
- return;
- }
- byte[] data;
- InputStream input = getInputStream(uri);
- if (input == null) {
- chain.doFilter(req, res);
- return;
- }
- try {
- ByteArrayOutputStream output = new ByteArrayOutputStream();
- byte[] buffer = new byte[8192];
- int n = 0;
- while (-1 != (n = input.read(buffer))) {
- output.write(buffer, 0, n);
- }
- data = output.toByteArray();
- } finally {
- input.close();
- }
- response.setDateHeader("Last-Modified", lastModified);
- OutputStream output = response.getOutputStream();
- output.write(data);
- output.flush();
- }
-
- private boolean isFile(String path) {
- return path.startsWith("/") || path.indexOf(":") <= 1;
- }
-
- private long getLastModified(String uri) {
- for (String resource : resources) {
- if (resource != null && resource.length() > 0) {
- String path = resource + uri;
- if (isFile(path)) {
- File file = new File(path);
- if (file.exists()) {
- return file.lastModified();
- }
- }
- }
- }
- return start;
- }
-
- private InputStream getInputStream(String uri) {
- for (String resource : resources) {
- String path = resource + uri;
- try {
- if (isFile(path)) {
- return new FileInputStream(path);
- } else if (path.startsWith(CLASSPATH_PREFIX)) {
- return Thread.currentThread().getContextClassLoader().getResourceAsStream(path.substring(CLASSPATH_PREFIX.length()));
- } else {
- return new URL(path).openStream();
- }
- } catch (IOException e) {
- }
- }
- return null;
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/dump.sh b/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/dump.sh
deleted file mode 100755
index 2eaad1b..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/dump.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-BIN_DIR=`pwd`
-cd ..
-DEPLOY_DIR=`pwd`
-CONF_DIR=$DEPLOY_DIR/conf
-
-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-
-if [ -z "$SERVER_NAME" ]; then
- SERVER_NAME=`hostname`
-fi
-
-PIDS=`ps -ef | grep java | grep -v grep | grep "$CONF_DIR" |awk '{print $2}'`
-if [ -z "$PIDS" ]; then
- echo "ERROR: The $SERVER_NAME does not started!"
- exit 1
-fi
-
-LOGS_DIR=""
-if [ -n "$LOGS_FILE" ]; then
- LOGS_DIR=`dirname $LOGS_FILE`
-else
- LOGS_DIR=$DEPLOY_DIR/logs
-fi
-if [ ! -d $LOGS_DIR ]; then
- mkdir $LOGS_DIR
-fi
-DUMP_DIR=$LOGS_DIR/dump
-if [ ! -d $DUMP_DIR ]; then
- mkdir $DUMP_DIR
-fi
-DUMP_DATE=`date +%Y%m%d%H%M%S`
-DATE_DIR=$DUMP_DIR/$DUMP_DATE
-if [ ! -d $DATE_DIR ]; then
- mkdir $DATE_DIR
-fi
-
-echo -e "Dumping the $SERVER_NAME ...\c"
-for PID in $PIDS ; do
- jstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1
- echo -e ".\c"
- jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
- echo -e ".\c"
- jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
- echo -e ".\c"
- jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
- echo -e ".\c"
- jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
- echo -e ".\c"
- jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
- echo -e ".\c"
- jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
- echo -e ".\c"
- if [ -r /usr/sbin/lsof ]; then
- /usr/sbin/lsof -p $PID > $DATE_DIR/lsof-$PID.dump
- echo -e ".\c"
- fi
-done
-
-if [ -r /assembly.bin/netstat ]; then
-/assembly.bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/iostat ]; then
-/usr/assembly.bin/iostat > $DATE_DIR/iostat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/mpstat ]; then
-/usr/assembly.bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/vmstat ]; then
-/usr/assembly.bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/free ]; then
-/usr/assembly.bin/free -t > $DATE_DIR/free.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/sar ]; then
-/usr/assembly.bin/sar > $DATE_DIR/sar.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/uptime ]; then
-/usr/assembly.bin/uptime > $DATE_DIR/uptime.dump 2>&1
-echo -e ".\c"
-fi
-
-echo "OK!"
-echo "DUMP: $DATE_DIR"
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/restart.sh b/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/restart.sh
deleted file mode 100644
index 647ec19..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/restart.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-./stop.sh
-./start.sh
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/server.sh b/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/server.sh
deleted file mode 100644
index 90947a5..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/server.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-if [ "$1" = "start" ]; then
- ./start.sh
-else
- if [ "$1" = "stop" ]; then
- ./stop.sh
- else
- if [ "$1" = "debug" ]; then
- ./start.sh debug
- else
- if [ "$1" = "restart" ]; then
- ./restart.sh
- else
- if [ "$1" = "dump" ]; then
- ./dump.sh
- else
- echo "ERROR: Please input argument: start or stop or debug or restart or dump"
- exit 1
- fi
- fi
- fi
- fi
-fi
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.bat b/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.bat
deleted file mode 100644
index fce3ff6..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-@echo off & setlocal enabledelayedexpansion
-
-set LIB_JARS=""
-cd ..\lib
-for %%i in (*) do set LIB_JARS=!LIB_JARS!;..\lib\%%i
-cd ..\assembly.bin
-
-if ""%1"" == ""debug"" goto debug
-if ""%1"" == ""jmx"" goto jmx
-
-java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -classpath ..\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
-goto end
-
-:debug
-java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -classpath ..\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
-goto end
-
-:jmx
-java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath ..\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
-
-:end
-pause
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.sh b/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.sh
deleted file mode 100755
index 026903a..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/start.sh
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-BIN_DIR=`pwd`
-cd ..
-DEPLOY_DIR=`pwd`
-CONF_DIR=$DEPLOY_DIR/conf
-
-
-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-SERVER_PROTOCOL=`sed '/dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-if [ -z "$SERVER_HOST" ]; then
- SERVER_HOST=`sed '/dubbo.protocol.host/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-fi
-
-if [ -z "$SERVER_PORT" ]; then
- SERVER_PORT=`sed '/dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-fi
-LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-
-if [ -z "$SERVER_HOST" ]; then
- SERVER_HOST='127.0.0.1'
-fi
-
-if [ -z "$SERVER_NAME" ]; then
- SERVER_NAME=`hostname`
-fi
-
-PIDS=`ps -ef | grep java | grep -v grep | grep "$CONF_DIR" |awk '{print $2}'`
-if [ -n "$PIDS" ]; then
- echo "ERROR: The $SERVER_NAME already started!"
- echo "PID: $PIDS"
- exit 1
-fi
-
-if [ -n "$SERVER_PORT" ]; then
- SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
- if [ $SERVER_PORT_COUNT -gt 0 ]; then
- echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
- exit 1
- fi
-fi
-
-LOGS_DIR=""
-if [ -n "$LOGS_FILE" ]; then
- LOGS_DIR=`dirname $LOGS_FILE`
-else
- LOGS_DIR=$DEPLOY_DIR/logs
-fi
-if [ ! -d $LOGS_DIR ]; then
- mkdir $LOGS_DIR
-fi
-STDOUT_FILE=$LOGS_DIR/stdout.log
-
-LIB_DIR=$DEPLOY_DIR/lib
-LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"`
-
-JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
-JAVA_DEBUG_OPTS=""
-if [ "$1" = "debug" ]; then
- JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
-fi
-JAVA_JMX_OPTS=""
-if [ "$1" = "jmx" ]; then
- JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
-fi
-JAVA_MEM_OPTS=""
-BITS=`java -version 2>&1 | grep -i 64-bit`
-if [ -n "$BITS" ]; then
- JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
-else
- JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
-fi
-
-echo -e "Starting the $SERVER_NAME ...\c"
-nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS com.alibaba.dubbo.container.Main > $STDOUT_FILE 2>&1 &
-
-COUNT=0
-while [ $COUNT -lt 1 ]; do
- echo -e ".\c"
- sleep 1
- if [ -n "$SERVER_PORT" ]; then
- if [ "$SERVER_PROTOCOL" == "dubbo" ]; then
- COUNT=`echo status | nc -i 1 $SERVER_HOST $SERVER_PORT | grep -c OK`
- else
- COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
- fi
- else
- COUNT=`ps -f | grep java | grep -v grep | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
- fi
- if [ $COUNT -gt 0 ]; then
- break
- fi
-done
-
-echo "OK!"
-PIDS=`ps -f | grep java | grep -v grep | grep "$DEPLOY_DIR" | awk '{print $2}'`
-echo "PID: $PIDS"
-echo "STDOUT: $STDOUT_FILE"
-
-if [ "$1" = "run" ]; then
- while ps -p $PIDS > /dev/null
- do
- echo -e ".\c"
- sleep 1
- done
-fi
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/stop.sh b/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/stop.sh
deleted file mode 100755
index 8fca15e..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/assembly/bin/stop.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-BIN_DIR=`pwd`
-cd ..
-DEPLOY_DIR=`pwd`
-CONF_DIR=$DEPLOY_DIR/conf
-
-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-
-if [ -z "$SERVER_NAME" ]; then
- SERVER_NAME=`hostname`
-fi
-
-PIDS=`ps -ef | grep java | grep -v grep | grep "$CONF_DIR" |awk '{print $2}'`
-if [ -z "$PIDS" ]; then
- echo "ERROR: The $SERVER_NAME does not started!"
- exit 1
-fi
-
-if [ "$1" != "skip" ]; then
- $BIN_DIR/dump.sh
-fi
-
-echo -e "Stopping the $SERVER_NAME ...\c"
-for PID in $PIDS ; do
- kill $PID > /dev/null 2>&1
-done
-
-COUNT=0
-while [ $COUNT -lt 1 ]; do
- echo -e ".\c"
- sleep 1
- COUNT=1
- for PID in $PIDS ; do
- PID_EXIST=`ps -f -p $PID | grep java`
- if [ -n "$PID_EXIST" ]; then
- COUNT=0
- break
- fi
- done
-done
-
-echo "OK!"
-echo "PID: $PIDS"
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.container.Container b/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.container.Container
deleted file mode 100644
index b3bfcf6..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.container.Container
+++ /dev/null
@@ -1,2 +0,0 @@
-registry=com.alibaba.dubbo.monitor.simple.container.RegistryContainer
-jetty-monitor=com.alibaba.dubbo.monitor.simple.container.JettyContainer
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.monitor.simple.servlet.PageHandler b/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.monitor.simple.servlet.PageHandler
deleted file mode 100644
index f31319c..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/dubbo/internal/com.alibaba.dubbo.monitor.simple.servlet.PageHandler
+++ /dev/null
@@ -1,19 +0,0 @@
-services=com.alibaba.dubbo.monitor.simple.pages.ServicesPageHandler
-providers=com.alibaba.dubbo.monitor.simple.pages.ProvidersPageHandler
-consumers=com.alibaba.dubbo.monitor.simple.pages.ConsumersPageHandler
-statistics=com.alibaba.dubbo.monitor.simple.pages.StatisticsPageHandler
-charts=com.alibaba.dubbo.monitor.simple.pages.ChartsPageHandler
-applications=com.alibaba.dubbo.monitor.simple.pages.ApplicationsPageHandler
-dependencies=com.alibaba.dubbo.monitor.simple.pages.DependenciesPageHandler
-hosts=com.alibaba.dubbo.monitor.simple.pages.HostsPageHandler
-unregister=com.alibaba.dubbo.monitor.simple.pages.UnregisterPageHandler
-unsubscribe=com.alibaba.dubbo.monitor.simple.pages.UnsubscribePageHandler
-index=com.alibaba.dubbo.monitor.simple.pages.HomePageHandler
-status=com.alibaba.dubbo.monitor.simple.pages.StatusPageHandler
-log=com.alibaba.dubbo.monitor.simple.pages.LogPageHandler
-system=com.alibaba.dubbo.monitor.simple.pages.SystemPageHandler
-registries=com.alibaba.dubbo.monitor.simple.pages.RegistriesPageHandler
-registered=com.alibaba.dubbo.monitor.simple.pages.RegisteredPageHandler
-subscribed=com.alibaba.dubbo.monitor.simple.pages.SubscribedPageHandler
-servers=com.alibaba.dubbo.monitor.simple.pages.ServersPageHandler
-clients=com.alibaba.dubbo.monitor.simple.pages.ClientsPageHandler
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/resources/META-INF/spring/dubbo-monitor-simple.xml b/dubbo-monitor-simple/src/main/resources/META-INF/spring/dubbo-monitor-simple.xml
deleted file mode 100644
index 8032d09..0000000
--- a/dubbo-monitor-simple/src/main/resources/META-INF/spring/dubbo-monitor-simple.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
- <property name="location" value="classpath:conf/dubbo.properties"/>
- </bean>
-
- <bean id="monitorService" class="com.alibaba.dubbo.monitor.simple.SimpleMonitorService">
- </bean>
-
- <dubbo:application name="${dubbo.application.name}" owner="${dubbo.application.owner}"/>
-
- <dubbo:registry client="curator" address="${dubbo.registry.address}"/>
-
- <dubbo:protocol name="dubbo" port="${dubbo.protocol.port}"/>
-
- <dubbo:service interface="com.alibaba.dubbo.monitor.MonitorService" ref="monitorService" delay="-1"/>
-
- <dubbo:reference id="registryService" interface="com.alibaba.dubbo.registry.RegistryService"/>
-
-</beans>
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/resources/conf/dubbo.properties b/dubbo-monitor-simple/src/main/resources/conf/dubbo.properties
deleted file mode 100644
index 9bece5f..0000000
--- a/dubbo-monitor-simple/src/main/resources/conf/dubbo.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-dubbo.container=log4j,spring,registry,jetty-monitor
-dubbo.application.name=simple-monitor
-dubbo.application.owner=dubbo
-#dubbo.registry.address=multicast://224.5.6.7:1234
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-#dubbo.registry.address=redis://127.0.0.1:6379
-#dubbo.registry.address=dubbo://127.0.0.1:9090
-dubbo.protocol.port=7070
-dubbo.jetty.port=8080
-dubbo.jetty.directory=${user.home}/monitor
-dubbo.charts.directory=${user.home}/monitor/charts
-dubbo.statistics.directory=${user.home}/monitor/statistics
-dubbo.log4j.file=logs/dubbo-monitor-simple.log
-dubbo.log4j.level=WARN
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/main/resources/log4j.xml b/dubbo-monitor-simple/src/main/resources/log4j.xml
deleted file mode 100644
index 315d6b3..0000000
--- a/dubbo-monitor-simple/src/main/resources/log4j.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
- <param name="target" value="System.out"/>
- <param name="encoding" value="GBK"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%5p %c{2} - %m%n"/>
- </layout>
- </appender>
- <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
- <param name="file" value="dubbo-governance.log"/>
- <param name="append" value="true"/>
- <param name="maxFileSize" value="10MB"/>
- <param name="maxBackupIndex" value="100"/>
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d [%t] %-5p %C{6} (%F:%L) - %m%n"/>
- </layout>
- </appender>
-
- <logger name="org.apache">
- <level value="INFO"/>
- </logger>
- <root>
- <level value="INFO"/>
- <appender-ref ref="STDOUT"/>
- <appender-ref ref="FILE"/>
- </root>
-</log4j:configuration>
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitor.java b/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitor.java
deleted file mode 100644
index 777e281..0000000
--- a/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitor.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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;
-
-public class SimpleMonitor {
-
- public static void main(String[] args) {
- com.alibaba.dubbo.container.Main.main(args);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorServiceTest.java b/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorServiceTest.java
deleted file mode 100644
index 58549e0..0000000
--- a/dubbo-monitor-simple/src/test/java/com/alibaba/dubbo/monitor/simple/SimpleMonitorServiceTest.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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;
-
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.utils.NetUtils;
-
-import org.junit.Test;
-
-/**
- * SimpleMonitorServiceTest
- */
-public class SimpleMonitorServiceTest {
-
- @Test
- public void testMonitor() {
- new SimpleMonitorService().collect(new URL("dubbo", NetUtils.getLocalHost(), 0));
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/test/resources/dubbo.properties b/dubbo-monitor-simple/src/test/resources/dubbo.properties
deleted file mode 100644
index ffe1763..0000000
--- a/dubbo-monitor-simple/src/test/resources/dubbo.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-dubbo.container=log4j,spring,registry,jetty
-dubbo.application.name=simple-monitor
-dubbo.application.owner=
-dubbo.registry.address=multicast://224.5.6.7:1234
-#dubbo.registry.address=zookeeper://127.0.0.1:2181
-#dubbo.registry.address=redis://127.0.0.1:6379
-#dubbo.registry.address=dubbo://127.0.0.1:9090
-dubbo.protocol.port=7070
-dubbo.jetty.port=8080
-dubbo.jetty.directory=${user.home}/monitor
-dubbo.charts.directory=${dubbo.jetty.directory}/charts
-dubbo.statistics.directory=${user.home}/monitor/statistics
-#dubbo.log4j.file=logs/dubbo-demo-consumer.log
-#dubbo.log4j.level=WARN
\ No newline at end of file
diff --git a/dubbo-monitor-simple/src/test/resources/log4j.xml b/dubbo-monitor-simple/src/test/resources/log4j.xml
deleted file mode 100644
index 230a044..0000000
--- a/dubbo-monitor-simple/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n"/>
- </layout>
- </appender>
- <root>
- <level value="INFO"/>
- <appender-ref ref="CONSOLE"/>
- </root>
-</log4j:configuration>
\ No newline at end of file
diff --git a/dubbo-registry-simple/pom.xml b/dubbo-registry-simple/pom.xml
deleted file mode 100644
index 011aecd..0000000
--- a/dubbo-registry-simple/pom.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo-ops</artifactId>
- <version>2.0.0</version>
- </parent>
- <artifactId>dubbo-registry-simple</artifactId>
- <packaging>jar</packaging>
- <name>${project.artifactId}</name>
- <description>The reference implementation of dubbo registry</description>
- <properties>
- <skip_maven_deploy>false</skip_maven_deploy>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty</artifactId>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>unpack</id>
- <phase>package</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>${dubbo_all_version}</version>
- <outputDirectory>${project.build.directory}/dubbo</outputDirectory>
- <includes>META-INF/assembly/**</includes>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <configuration>
- <descriptor>src/main/assembly/assembly.xml</descriptor>
- </configuration>
- <executions>
- <execution>
- <id>make-assembly</id>
- <phase>package</phase>
- <goals>
- <goal>single</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/main/assembly/assembly.xml b/dubbo-registry-simple/src/main/assembly/assembly.xml
deleted file mode 100644
index 39f34dc..0000000
--- a/dubbo-registry-simple/src/main/assembly/assembly.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-<assembly>
- <id>assembly</id>
- <formats>
- <format>tar.gz</format>
- </formats>
- <includeBaseDirectory>true</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${project.build.directory}/classes/META-INF/assembly/bin</directory>
- <outputDirectory>assembly.bin</outputDirectory>
- <fileMode>0755</fileMode>
- </fileSet>
- <fileSet>
- <directory>src/main/resources/conf</directory>
- <outputDirectory>conf</outputDirectory>
- <fileMode>0644</fileMode>
- </fileSet>
- </fileSets>
- <dependencySets>
- <dependencySet>
- <outputDirectory>lib</outputDirectory>
- </dependencySet>
- </dependencySets>
-</assembly>
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/main/java/com/alibaba/dubbo/registry/simple/SimpleRegistryService.java b/dubbo-registry-simple/src/main/java/com/alibaba/dubbo/registry/simple/SimpleRegistryService.java
deleted file mode 100644
index c8e8af9..0000000
--- a/dubbo-registry-simple/src/main/java/com/alibaba/dubbo/registry/simple/SimpleRegistryService.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.registry.simple;
-
-import com.alibaba.dubbo.common.Constants;
-import com.alibaba.dubbo.common.URL;
-import com.alibaba.dubbo.common.logger.Logger;
-import com.alibaba.dubbo.common.logger.LoggerFactory;
-import com.alibaba.dubbo.common.utils.ConcurrentHashSet;
-import com.alibaba.dubbo.common.utils.NetUtils;
-import com.alibaba.dubbo.common.utils.UrlUtils;
-import com.alibaba.dubbo.registry.NotifyListener;
-import com.alibaba.dubbo.registry.RegistryService;
-import com.alibaba.dubbo.registry.support.AbstractRegistry;
-import com.alibaba.dubbo.rpc.RpcContext;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * SimpleRegistryService
- */
-public class SimpleRegistryService extends AbstractRegistry {
-
- private final static Logger logger = LoggerFactory.getLogger(SimpleRegistryService.class);
- private final ConcurrentMap<String, Set<URL>> remoteRegistered = new ConcurrentHashMap<String, Set<URL>>();
- private final ConcurrentMap<String, ConcurrentMap<URL, Set<NotifyListener>>> remoteSubscribed = new ConcurrentHashMap<String, ConcurrentMap<URL, Set<NotifyListener>>>();
-
- public SimpleRegistryService() {
- super(new URL("dubbo", NetUtils.getLocalHost(), 0, RegistryService.class.getName(), "file", "N/A"));
- }
-
- public boolean isAvailable() {
- return true;
- }
-
- public List<URL> lookup(URL url) {
- List<URL> urls = new ArrayList<URL>();
- for (URL u : getRegistered()) {
- if (UrlUtils.isMatch(url, u)) {
- urls.add(u);
- }
- }
- return urls;
- }
-
- public void register(URL url) {
- String client = RpcContext.getContext().getRemoteAddressString();
- Set<URL> urls = remoteRegistered.get(client);
- if (urls == null) {
- remoteRegistered.putIfAbsent(client, new ConcurrentHashSet<URL>());
- urls = remoteRegistered.get(client);
- }
- urls.add(url);
- super.register(url);
- registered(url);
- }
-
- public void unregister(URL url) {
- String client = RpcContext.getContext().getRemoteAddressString();
- Set<URL> urls = remoteRegistered.get(client);
- if (urls != null && urls.size() > 0) {
- urls.remove(url);
- }
- super.unregister(url);
- unregistered(url);
- }
-
- public void subscribe(URL url, NotifyListener listener) {
- if (getUrl().getPort() == 0) {
- URL registryUrl = RpcContext.getContext().getUrl();
- if (registryUrl != null && registryUrl.getPort() > 0
- && RegistryService.class.getName().equals(registryUrl.getPath())) {
- super.setUrl(registryUrl);
- super.register(registryUrl);
- }
- }
- String client = RpcContext.getContext().getRemoteAddressString();
- ConcurrentMap<URL, Set<NotifyListener>> clientListeners = remoteSubscribed.get(client);
- if (clientListeners == null) {
- remoteSubscribed.putIfAbsent(client, new ConcurrentHashMap<URL, Set<NotifyListener>>());
- clientListeners = remoteSubscribed.get(client);
- }
- Set<NotifyListener> listeners = clientListeners.get(url);
- if (listeners == null) {
- clientListeners.putIfAbsent(url, new ConcurrentHashSet<NotifyListener>());
- listeners = clientListeners.get(url);
- }
- listeners.add(listener);
- super.subscribe(url, listener);
- subscribed(url, listener);
- }
-
- public void unsubscribe(URL url, NotifyListener listener) {
- if (!Constants.ANY_VALUE.equals(url.getServiceInterface())
- && url.getParameter(Constants.REGISTER_KEY, true)) {
- unregister(url);
- }
- String client = RpcContext.getContext().getRemoteAddressString();
- Map<URL, Set<NotifyListener>> clientListeners = remoteSubscribed.get(client);
- if (clientListeners != null && clientListeners.size() > 0) {
- Set<NotifyListener> listeners = clientListeners.get(url);
- if (listeners != null && listeners.size() > 0) {
- listeners.remove(listener);
- }
- }
- }
-
- protected void registered(URL url) {
- for (Map.Entry<URL, Set<NotifyListener>> entry : getSubscribed().entrySet()) {
- URL key = entry.getKey();
- if (UrlUtils.isMatch(key, url)) {
- List<URL> list = lookup(key);
- for (NotifyListener listener : entry.getValue()) {
- listener.notify(list);
- }
- }
- }
- }
-
- protected void unregistered(URL url) {
- for (Map.Entry<URL, Set<NotifyListener>> entry : getSubscribed().entrySet()) {
- URL key = entry.getKey();
- if (UrlUtils.isMatch(key, url)) {
- List<URL> list = lookup(key);
- for (NotifyListener listener : entry.getValue()) {
- listener.notify(list);
- }
- }
- }
- }
-
- protected void subscribed(final URL url, final NotifyListener listener) {
- if (Constants.ANY_VALUE.equals(url.getServiceInterface())) {
- new Thread(new Runnable() {
- public void run() {
- Map<String, List<URL>> map = new HashMap<String, List<URL>>();
- for (URL u : getRegistered()) {
- if (UrlUtils.isMatch(url, u)) {
- String service = u.getServiceInterface();
- List<URL> list = map.get(service);
- if (list == null) {
- list = new ArrayList<URL>();
- map.put(service, list);
- }
- list.add(u);
- }
- }
- for (List<URL> list : map.values()) {
- try {
- listener.notify(list);
- } catch (Throwable e) {
- logger.warn("Discard to notify " + url.getServiceKey() + " to listener " + listener);
- }
- }
- }
- }, "DubboMonitorNotifier").start();
- } else {
- List<URL> list = lookup(url);
- try {
- listener.notify(list);
- } catch (Throwable e) {
- logger.warn("Discard to notify " + url.getServiceKey() + " to listener " + listener);
- }
- }
- }
-
- public void disconnect() {
- String client = RpcContext.getContext().getRemoteAddressString();
- if (logger.isInfoEnabled()) {
- logger.info("Disconnected " + client);
- }
- Set<URL> urls = remoteRegistered.get(client);
- if (urls != null && urls.size() > 0) {
- for (URL url : urls) {
- unregister(url);
- }
- }
- Map<URL, Set<NotifyListener>> listeners = remoteSubscribed.get(client);
- if (listeners != null && listeners.size() > 0) {
- for (Map.Entry<URL, Set<NotifyListener>> entry : listeners.entrySet()) {
- URL url = entry.getKey();
- for (NotifyListener listener : entry.getValue()) {
- unsubscribe(url, listener);
- }
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/dump.sh b/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/dump.sh
deleted file mode 100755
index 2eaad1b..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/dump.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-BIN_DIR=`pwd`
-cd ..
-DEPLOY_DIR=`pwd`
-CONF_DIR=$DEPLOY_DIR/conf
-
-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-
-if [ -z "$SERVER_NAME" ]; then
- SERVER_NAME=`hostname`
-fi
-
-PIDS=`ps -ef | grep java | grep -v grep | grep "$CONF_DIR" |awk '{print $2}'`
-if [ -z "$PIDS" ]; then
- echo "ERROR: The $SERVER_NAME does not started!"
- exit 1
-fi
-
-LOGS_DIR=""
-if [ -n "$LOGS_FILE" ]; then
- LOGS_DIR=`dirname $LOGS_FILE`
-else
- LOGS_DIR=$DEPLOY_DIR/logs
-fi
-if [ ! -d $LOGS_DIR ]; then
- mkdir $LOGS_DIR
-fi
-DUMP_DIR=$LOGS_DIR/dump
-if [ ! -d $DUMP_DIR ]; then
- mkdir $DUMP_DIR
-fi
-DUMP_DATE=`date +%Y%m%d%H%M%S`
-DATE_DIR=$DUMP_DIR/$DUMP_DATE
-if [ ! -d $DATE_DIR ]; then
- mkdir $DATE_DIR
-fi
-
-echo -e "Dumping the $SERVER_NAME ...\c"
-for PID in $PIDS ; do
- jstack $PID > $DATE_DIR/jstack-$PID.dump 2>&1
- echo -e ".\c"
- jinfo $PID > $DATE_DIR/jinfo-$PID.dump 2>&1
- echo -e ".\c"
- jstat -gcutil $PID > $DATE_DIR/jstat-gcutil-$PID.dump 2>&1
- echo -e ".\c"
- jstat -gccapacity $PID > $DATE_DIR/jstat-gccapacity-$PID.dump 2>&1
- echo -e ".\c"
- jmap $PID > $DATE_DIR/jmap-$PID.dump 2>&1
- echo -e ".\c"
- jmap -heap $PID > $DATE_DIR/jmap-heap-$PID.dump 2>&1
- echo -e ".\c"
- jmap -histo $PID > $DATE_DIR/jmap-histo-$PID.dump 2>&1
- echo -e ".\c"
- if [ -r /usr/sbin/lsof ]; then
- /usr/sbin/lsof -p $PID > $DATE_DIR/lsof-$PID.dump
- echo -e ".\c"
- fi
-done
-
-if [ -r /assembly.bin/netstat ]; then
-/assembly.bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/iostat ]; then
-/usr/assembly.bin/iostat > $DATE_DIR/iostat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/mpstat ]; then
-/usr/assembly.bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/vmstat ]; then
-/usr/assembly.bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/free ]; then
-/usr/assembly.bin/free -t > $DATE_DIR/free.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/sar ]; then
-/usr/assembly.bin/sar > $DATE_DIR/sar.dump 2>&1
-echo -e ".\c"
-fi
-if [ -r /usr/assembly.bin/uptime ]; then
-/usr/assembly.bin/uptime > $DATE_DIR/uptime.dump 2>&1
-echo -e ".\c"
-fi
-
-echo "OK!"
-echo "DUMP: $DATE_DIR"
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/restart.sh b/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/restart.sh
deleted file mode 100644
index 647ec19..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/restart.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-./stop.sh
-./start.sh
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/server.sh b/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/server.sh
deleted file mode 100644
index 90947a5..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/server.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-if [ "$1" = "start" ]; then
- ./start.sh
-else
- if [ "$1" = "stop" ]; then
- ./stop.sh
- else
- if [ "$1" = "debug" ]; then
- ./start.sh debug
- else
- if [ "$1" = "restart" ]; then
- ./restart.sh
- else
- if [ "$1" = "dump" ]; then
- ./dump.sh
- else
- echo "ERROR: Please input argument: start or stop or debug or restart or dump"
- exit 1
- fi
- fi
- fi
- fi
-fi
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/start.bat b/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/start.bat
deleted file mode 100644
index fce3ff6..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/start.bat
+++ /dev/null
@@ -1,22 +0,0 @@
-@echo off & setlocal enabledelayedexpansion
-
-set LIB_JARS=""
-cd ..\lib
-for %%i in (*) do set LIB_JARS=!LIB_JARS!;..\lib\%%i
-cd ..\assembly.bin
-
-if ""%1"" == ""debug"" goto debug
-if ""%1"" == ""jmx"" goto jmx
-
-java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -classpath ..\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
-goto end
-
-:debug
-java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -classpath ..\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
-goto end
-
-:jmx
-java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath ..\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
-
-:end
-pause
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/start.sh b/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/start.sh
deleted file mode 100755
index 3b491f0..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/start.sh
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-BIN_DIR=`pwd`
-cd ..
-DEPLOY_DIR=`pwd`
-CONF_DIR=$DEPLOY_DIR/conf
-
-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-SERVER_PROTOCOL=`sed '/dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-SERVER_HOST=`sed '/dubbo.protocol.host/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-SERVER_PORT=`sed '/dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-LOGS_FILE=`sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-
-if [ -z "$SERVER_HOST" ]; then
- SERVER_HOST='127.0.0.1'
-fi
-
-if [ -z "$SERVER_NAME" ]; then
- SERVER_NAME=`hostname`
-fi
-
-PIDS=`ps -ef | grep java | grep -v grep | grep "$CONF_DIR" |awk '{print $2}'`
-if [ -n "$PIDS" ]; then
- echo "ERROR: The $SERVER_NAME already started!"
- echo "PID: $PIDS"
- exit 1
-fi
-
-if [ -n "$SERVER_PORT" ]; then
- SERVER_PORT_COUNT=`netstat -tln | grep $SERVER_PORT | wc -l`
- if [ $SERVER_PORT_COUNT -gt 0 ]; then
- echo "ERROR: The $SERVER_NAME port $SERVER_PORT already used!"
- exit 1
- fi
-fi
-
-LOGS_DIR=""
-if [ -n "$LOGS_FILE" ]; then
- LOGS_DIR=`dirname $LOGS_FILE`
-else
- LOGS_DIR=$DEPLOY_DIR/logs
-fi
-if [ ! -d $LOGS_DIR ]; then
- mkdir $LOGS_DIR
-fi
-STDOUT_FILE=$LOGS_DIR/stdout.log
-
-LIB_DIR=$DEPLOY_DIR/lib
-LIB_JARS=`ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"`
-
-JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true "
-JAVA_DEBUG_OPTS=""
-if [ "$1" = "debug" ]; then
- JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
-fi
-JAVA_JMX_OPTS=""
-if [ "$1" = "jmx" ]; then
- JAVA_JMX_OPTS=" -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
-fi
-JAVA_MEM_OPTS=""
-BITS=`java -version 2>&1 | grep -i 64-bit`
-if [ -n "$BITS" ]; then
- JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
-else
- JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
-fi
-
-echo -e "Starting the $SERVER_NAME ...\c"
-nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath $CONF_DIR:$LIB_JARS com.alibaba.dubbo.container.Main > $STDOUT_FILE 2>&1 &
-
-COUNT=0
-while [ $COUNT -lt 1 ]; do
- echo -e ".\c"
- sleep 1
- if [ -n "$SERVER_PORT" ]; then
- if [ "$SERVER_PROTOCOL" == "dubbo" ]; then
- COUNT=`echo status | nc -i 1 $SERVER_HOST $SERVER_PORT | grep -c OK`
- else
- COUNT=`netstat -an | grep $SERVER_PORT | wc -l`
- fi
- else
- COUNT=`ps -f | grep java | grep -v grep | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l`
- fi
- if [ $COUNT -gt 0 ]; then
- break
- fi
-done
-
-echo "OK!"
-PIDS=`ps -f | grep java | grep -v grep | grep "$DEPLOY_DIR" | awk '{print $2}'`
-echo "PID: $PIDS"
-echo "STDOUT: $STDOUT_FILE"
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/stop.sh b/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/stop.sh
deleted file mode 100755
index 8fca15e..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/assembly/bin/stop.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/bash
-cd `dirname $0`
-BIN_DIR=`pwd`
-cd ..
-DEPLOY_DIR=`pwd`
-CONF_DIR=$DEPLOY_DIR/conf
-
-SERVER_NAME=`sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'`
-
-if [ -z "$SERVER_NAME" ]; then
- SERVER_NAME=`hostname`
-fi
-
-PIDS=`ps -ef | grep java | grep -v grep | grep "$CONF_DIR" |awk '{print $2}'`
-if [ -z "$PIDS" ]; then
- echo "ERROR: The $SERVER_NAME does not started!"
- exit 1
-fi
-
-if [ "$1" != "skip" ]; then
- $BIN_DIR/dump.sh
-fi
-
-echo -e "Stopping the $SERVER_NAME ...\c"
-for PID in $PIDS ; do
- kill $PID > /dev/null 2>&1
-done
-
-COUNT=0
-while [ $COUNT -lt 1 ]; do
- echo -e ".\c"
- sleep 1
- COUNT=1
- for PID in $PIDS ; do
- PID_EXIST=`ps -f -p $PID | grep java`
- if [ -n "$PID_EXIST" ]; then
- COUNT=0
- break
- fi
- done
-done
-
-echo "OK!"
-echo "PID: $PIDS"
diff --git a/dubbo-registry-simple/src/main/resources/META-INF/spring/dubbo-registry-simple.xml b/dubbo-registry-simple/src/main/resources/META-INF/spring/dubbo-registry-simple.xml
deleted file mode 100644
index 8be8861..0000000
--- a/dubbo-registry-simple/src/main/resources/META-INF/spring/dubbo-registry-simple.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
- xmlns="http://www.springframework.org/schema/beans"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
-
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
- <property name="location" value="classpath:dubbo.properties"/>
- </bean>
-
- <dubbo:application name="${dubbo.application.name}" owner="${dubbo.application.owner}"/>
-
- <dubbo:protocol name="dubbo" port="${dubbo.protocol.port}" heartbeat="180000"/>
-
- <dubbo:service id="registryServiceConfig" interface="com.alibaba.dubbo.registry.RegistryService"
- ref="registryService" registry="N/A" ondisconnect="disconnect" callbacks="1000">
- <dubbo:method name="subscribe">
- <dubbo:argument index="1" callback="true"/>
- </dubbo:method>
- <dubbo:method name="unsubscribe">
- <dubbo:argument index="1" callback="false"/>
- </dubbo:method>
- </dubbo:service>
-
- <bean id="registryService" class="com.alibaba.dubbo.registry.simple.SimpleRegistryService"/>
-
-</beans>
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/main/resources/conf/dubbo.properties b/dubbo-registry-simple/src/main/resources/conf/dubbo.properties
deleted file mode 100644
index a7ce85e..0000000
--- a/dubbo-registry-simple/src/main/resources/conf/dubbo.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-dubbo.container=log4j,spring
-dubbo.application.name=simple-registry
-dubbo.application.owner=dubbo
-dubbo.protocol.port=9090
-dubbo.log4j.file=logs/dubbo-simple-registry.log
-dubbo.log4j.level=WARN
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/test/java/com/alibaba/dubbo/registry/simple/SimpleRegistry.java b/dubbo-registry-simple/src/test/java/com/alibaba/dubbo/registry/simple/SimpleRegistry.java
deleted file mode 100644
index c7b1d9a..0000000
--- a/dubbo-registry-simple/src/test/java/com/alibaba/dubbo/registry/simple/SimpleRegistry.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.registry.simple;
-
-public class SimpleRegistry {
-
- public static void main(String[] args) {
- com.alibaba.dubbo.container.Main.main(args);
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/test/java/com/alibaba/dubbo/registry/simple/SimpleRegistryServiceTest.java b/dubbo-registry-simple/src/test/java/com/alibaba/dubbo/registry/simple/SimpleRegistryServiceTest.java
deleted file mode 100644
index f008a75..0000000
--- a/dubbo-registry-simple/src/test/java/com/alibaba/dubbo/registry/simple/SimpleRegistryServiceTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.registry.simple;
-
-import org.junit.Test;
-
-/**
- * SimpleRegistryServiceTest
- */
-public class SimpleRegistryServiceTest {
-
- @Test
- public void testRegistry() {
- new SimpleRegistryService();
- }
-
-}
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/test/resources/dubbo.properties b/dubbo-registry-simple/src/test/resources/dubbo.properties
deleted file mode 100644
index 6add997..0000000
--- a/dubbo-registry-simple/src/test/resources/dubbo.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You 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.
-
-dubbo.container=log4j,spring
-dubbo.application.name=simple-registry
-dubbo.application.owner=
-dubbo.protocol.port=9090
-#dubbo.log4j.file=logs/dubbo-demo-consumer.log
-#dubbo.log4j.level=WARN
\ No newline at end of file
diff --git a/dubbo-registry-simple/src/test/resources/log4j.xml b/dubbo-registry-simple/src/test/resources/log4j.xml
deleted file mode 100644
index 230a044..0000000
--- a/dubbo-registry-simple/src/test/resources/log4j.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements. See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You 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.
--->
-<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
-<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n"/>
- </layout>
- </appender>
- <root>
- <level value="INFO"/>
- <appender-ref ref="CONSOLE"/>
- </root>
-</log4j:configuration>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index fa319d5..69f7144 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,217 +16,73 @@
~ limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo-ops</artifactId>
- <version>2.0.0</version>
- <packaging>pom</packaging>
+ <groupId>org.apache</groupId>
+ <artifactId>dubbo-admin</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <modules>
+ <module>dubbo-admin-frontend</module>
+ <module>dubbo-admin-backend</module>
+ </modules>
+ <packaging>pom</packaging>
- <properties>
- <dubbo_all_version>2.6.0</dubbo_all_version>
- <dubbo_version>2.6.0</dubbo_version>
- <jfreechart_version>1.0.13</jfreechart_version>
+ <name>dubbo-admin</name>
+ <description>Dubbo admin front and back end</description>
- <!-- Temporarily added for lower version compatibility -->
- <spring_version>4.3.10.RELEASE</spring_version>
- <fastjson_version>1.2.31</fastjson_version>
- <curator_version>2.12.0</curator_version>
- <jetty_version>6.1.26</jetty_version>
- <servlet_version>3.1.0</servlet_version>
- <slf4j_version>1.7.25</slf4j_version>
- <log4j_version>1.2.16</log4j_version>
- <commons_lang3_version>3.4</commons_lang3_version>
+ <parent>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-parent</artifactId>
+ <version>2.0.2.RELEASE</version>
+ <relativePath/> <!-- lookup parent from repository -->
+ </parent>
- <!-- Test libs -->
- <junit_version>4.12</junit_version>
- <easymock_version>3.4</easymock_version>
- <jmockit_version>1.33</jmockit_version>
- <apache_rat_plugin.version>0.12</apache_rat_plugin.version>
- <maven_compiler_version>3.6.0</maven_compiler_version>
- <maven_jacoco_version>0.8.1</maven_jacoco_version>
- </properties>
+ <properties>
+ <main.basedir>${project.basedir}</main.basedir>
+ <commons-lang3-version>3.7</commons-lang3-version>
+ <dubbo-version>2.6.2</dubbo-version>
+ <curator-version>2.12.0</curator-version>
+ <fastjson-version>1.2.46</fastjson-version>
+ <snakeyaml-version>1.22</snakeyaml-version>
+ </properties>
- <modules>
- <module>dubbo-admin</module>
- <module>dubbo-monitor-simple</module>
- <module>dubbo-registry-simple</module>
- </modules>
-
- <dependencyManagement>
+ <dependencyManagement>
<dependencies>
- <!-- Currently, we still use "dubbo-all" as a dependency. -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>dubbo</artifactId>
- <version>${dubbo_all_version}</version>
- </dependency>
- <dependency>
- <groupId>jfree</groupId>
- <artifactId>jfreechart</artifactId>
- <version>${jfreechart_version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-framework-bom</artifactId>
- <version>${spring_version}</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
+ <dependency>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ <version>${commons-lang3-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>dubbo</artifactId>
+ <version>${dubbo-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.curator</groupId>
+ <artifactId>curator-framework</artifactId>
+ <version>${curator-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.alibaba</groupId>
+ <artifactId>fastjson</artifactId>
+ <version>${fastjson-version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.yaml</groupId>
+ <artifactId>snakeyaml</artifactId>
+ <version>${snakeyaml-version}</version>
+ </dependency>
+
+ </dependencies>
+ </dependencyManagement>
- <!-- Temporarily added for lower version compatibility -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>${fastjson_version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.curator</groupId>
- <artifactId>curator-framework</artifactId>
- <version>${curator_version}</version>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty</artifactId>
- <version>${jetty_version}</version>
- <exclusions>
- <exclusion>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>servlet-api</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>${servlet_version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>${slf4j_version}</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>${slf4j_version}</version>
- </dependency>
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4j_version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-lang3</artifactId>
- <version>${commons_lang3_version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <!-- Temporarily added for lower version compatibility -->
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>${junit_version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.easymock</groupId>
- <artifactId>easymock</artifactId>
- <version>${easymock_version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.jmockit</groupId>
- <artifactId>jmockit</artifactId>
- <version>${jmockit_version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- <build>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-dependency-plugin</artifactId>
- <version>2.10</version>
- </plugin>
- <plugin>
- <artifactId>maven-assembly-plugin</artifactId>
- <version>2.6</version>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>${maven_compiler_version}</version>
- <configuration>
- <fork>true</fork>
- <source>1.6</source>
- <target>1.6</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>${maven_jacoco_version}</version>
- <executions>
- <execution>
- <id>jacoco-initialize</id>
- <goals>
- <goal>prepare-agent</goal>
- </goals>
- <configuration>
- <propertyName>jacocoArgLine</propertyName>
- </configuration>
- </execution>
- <execution>
- <id>jacoco-site</id>
- <phase>package</phase>
- <goals>
- <goal>report</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <version>${apache_rat_plugin.version}</version>
- <executions>
- <execution>
- <id>verify.rat</id>
- <phase>verify</phase>
- <goals>
- <goal>check</goal>
- </goals>
- <configuration>
- <excludes>
- <exclude>**/.idea/</exclude>
- <exclude>**/*.iml</exclude>
- <exclude>.git/</exclude>
- <exclude>.gitignore</exclude>
- <exclude>.repository/</exclude>
- <exclude>**/.settings/*</exclude>
- <exclude>**/.classpath</exclude>
- <exclude>**/.project</exclude>
- <exclude>**/target/**</exclude>
- <exclude>**/*.log</exclude>
- <exclude>.codecov.yml</exclude>
- <exclude>.travis.yml</exclude>
- <exclude>README.md</exclude>
- </excludes>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-</project>
\ No newline at end of file
+</project>