You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by wa...@apache.org on 2019/05/25 12:25:23 UTC
[dubbo-website] branch asf-site updated: build htmls
This is an automated email from the ASF dual-hosted git repository.
wangxin pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git
The following commit(s) were added to refs/heads/asf-site by this push:
new 1a57773 build htmls
1a57773 is described below
commit 1a5777396389c5f48dd796cc9ff03f9351bc2e14
Author: Xin Wang <xi...@gmail.com>
AuthorDate: Sat May 25 20:23:49 2019 +0800
build htmls
---
build/blog.js | 2 +-
build/blogDetail.js | 2 +-
build/community.js | 2 +-
build/documentation.js | 2 +-
build/home.js | 2 +-
en-us/blog/apachecon-na-2018.html | 2 +-
en-us/blog/apachecon-na-2018.json | 2 +-
en-us/blog/download.html | 152 +++++------
en-us/blog/download.json | 4 +-
en-us/blog/dubbo-101.html | 14 +-
en-us/blog/dubbo-annotation.html | 8 +-
...o-basic-usage-dubbo-provider-configuration.html | 26 +-
en-us/blog/dubbo-fescar.html | 4 +-
en-us/blog/dubbo-generic-invoke.html | 2 +-
en-us/blog/dubbo-invoke.html | 2 +-
en-us/blog/dubbo-k8s.html | 2 +-
en-us/blog/dubbo-loadbalance.html | 2 +-
en-us/blog/dubbo-meetup-beijing-may-12th-2018.html | 2 +-
en-us/blog/dubbo-meetup-chengdu.html | 2 +-
en-us/blog/dubbo-meetup-hangzhou.html | 2 +-
.../blog/dubbo-meetup-shanghai-jun-23rd-2018.html | 2 +-
en-us/blog/dubbo-meetup-shenzhen.html | 2 +-
en-us/blog/dubbo-new-async.html | 8 +-
en-us/blog/dubbo-new-async.json | 2 +-
en-us/blog/dubbo-zk.html | 2 +-
en-us/blog/dubbo2-js.html | 2 +-
en-us/blog/dubbo2-js.json | 2 +-
en-us/blog/gsoc-2018.html | 2 +-
en-us/blog/index.html | 2 +-
en-us/blog/introduction-to-dubbo-qos.html | 2 +-
en-us/blog/introduction-to-dubbo-spi-2.html | 18 +-
en-us/blog/introduction-to-dubbo-spi.html | 2 +-
en-us/blog/pinpoint.html | 2 +-
en-us/blog/prepare-an-apache-release.html | 12 +-
en-us/blog/prepare-an-apache-release.json | 2 +-
en-us/blog/qcon-beijing-2018.html | 2 +-
en-us/blog/sentinel-introduction-for-dubbo.html | 2 +-
.../spring-boot-dubbo-start-stop-analysis.html | 2 +-
.../spring-boot-dubbo-start-stop-analysis.json | 2 +-
en-us/blog/tracing-with-skywalking.html | 4 +-
en-us/blog/tracing-with-skywalking.json | 2 +-
en-us/community/index.html | 2 +-
en-us/docs/admin/README.html | 2 +-
en-us/docs/admin/SUMMARY.html | 2 +-
en-us/docs/admin/install/admin-console.html | 2 +-
en-us/docs/admin/install/admin-console.json | 2 +-
en-us/docs/admin/install/consumer-demo.html | 2 +-
en-us/docs/admin/install/consumer-demo.json | 2 +-
en-us/docs/admin/install/introduction.html | 2 +-
en-us/docs/admin/install/provider-demo.html | 2 +-
en-us/docs/admin/install/provider-demo.json | 2 +-
en-us/docs/admin/install/redis.html | 2 +-
.../docs/admin/install/simple-monitor-center.html | 2 +-
.../docs/admin/install/simple-registry-center.html | 2 +-
en-us/docs/admin/install/zookeeper.html | 2 +-
en-us/docs/admin/introduction.html | 10 +-
en-us/docs/admin/introduction.json | 2 +-
en-us/docs/admin/ops/dubbo-ops.html | 2 +-
en-us/docs/admin/ops/introduction.html | 2 +-
en-us/docs/admin/ops/pinpoint.html | 2 +-
en-us/docs/admin/ops/skywalking.html | 4 +-
en-us/docs/admin/ops/skywalking.json | 2 +-
en-us/docs/admin/serviceGovernance.html | 2 +-
en-us/docs/admin/serviceSearch.html | 2 +-
en-us/docs/admin/serviceTest.html | 2 +-
en-us/docs/dev/README.html | 2 +-
en-us/docs/dev/SPI.html | 38 +--
en-us/docs/dev/SUMMARY.html | 2 +-
en-us/docs/dev/TCK.html | 2 +-
en-us/docs/dev/build.html | 2 +-
en-us/docs/dev/build.json | 2 +-
en-us/docs/dev/checklist.html | 2 +-
en-us/docs/dev/code-smell.html | 12 +-
en-us/docs/dev/coding.html | 2 +-
en-us/docs/dev/contract.html | 2 +-
en-us/docs/dev/contribution.html | 2 +-
en-us/docs/dev/design.html | 2 +-
en-us/docs/dev/implementation.html | 10 +-
en-us/docs/dev/impls/cache.html | 14 +-
en-us/docs/dev/impls/cluster.html | 6 +-
en-us/docs/dev/impls/compiler.html | 6 +-
en-us/docs/dev/impls/container.html | 8 +-
en-us/docs/dev/impls/dispatcher.html | 6 +-
en-us/docs/dev/impls/exchanger.html | 16 +-
en-us/docs/dev/impls/exporter-listener.html | 8 +-
en-us/docs/dev/impls/extension-factory.html | 6 +-
en-us/docs/dev/impls/filter.html | 6 +-
en-us/docs/dev/impls/introduction.html | 2 +-
en-us/docs/dev/impls/invoker-listener.html | 10 +-
en-us/docs/dev/impls/load-balance.html | 8 +-
en-us/docs/dev/impls/logger-adapter.html | 10 +-
en-us/docs/dev/impls/merger.html | 6 +-
en-us/docs/dev/impls/monitor.html | 10 +-
en-us/docs/dev/impls/networker.html | 8 +-
en-us/docs/dev/impls/page.html | 6 +-
en-us/docs/dev/impls/protocol.html | 24 +-
en-us/docs/dev/impls/proxy-factory.html | 8 +-
en-us/docs/dev/impls/registry.html | 54 ++--
en-us/docs/dev/impls/remoting.html | 18 +-
en-us/docs/dev/impls/router.html | 6 +-
en-us/docs/dev/impls/serialize.html | 8 +-
en-us/docs/dev/impls/status-checker.html | 6 +-
en-us/docs/dev/impls/telnet-handler.html | 8 +-
en-us/docs/dev/impls/threadpool.html | 6 +-
en-us/docs/dev/impls/validation.html | 10 +-
en-us/docs/dev/introduction.html | 2 +-
en-us/docs/dev/principals/code-detail.html | 2 +-
en-us/docs/dev/principals/configuration.html | 2 +-
en-us/docs/dev/principals/dummy.html | 288 ++++++++++-----------
en-us/docs/dev/principals/expansibility.html | 2 +-
en-us/docs/dev/principals/extension.html | 70 ++---
en-us/docs/dev/principals/general-knowledge.html | 2 +-
en-us/docs/dev/principals/introduction.html | 2 +-
en-us/docs/dev/principals/robustness.html | 2 +-
en-us/docs/dev/release.html | 2 +-
.../committer-guide/apache-dubbo-page_dev.html | 2 +-
.../committer-guide/apache-dubbo-page_dev.json | 2 +-
.../committer-guide/label-an-issue-guide_dev.html | 2 +-
.../committer-guide/label-an-issue-guide_dev.json | 2 +-
.../committer-guide/new-committer-guide_dev.html | 2 +-
.../committer-guide/release-guide_dev.html | 12 +-
.../committer-guide/release-guide_dev.json | 2 +-
.../committer-guide/website-guide_dev.html | 2 +-
.../committer-guide/website-guide_dev.json | 2 +-
.../contributor-guide/become-a-committer_dev.html | 2 +-
.../contributor-guide/cla-signing-guide_dev.html | 2 +-
.../dubbo-extension-guide_dev.html | 2 +-
.../dubbo-extension-guide_dev.json | 2 +-
.../mailing-list-subscription-guide_dev.html | 2 +-
.../mailing-list-subscription-guide_dev.json | 2 +-
.../new-contributor-guide_dev.html | 2 +-
.../new-contributor-guide_dev.json | 2 +-
.../reporting-security-issues_dev.html | 2 +-
.../reporting-security-issues_dev.json | 2 +-
.../software-donation-guide_dev.html | 4 +-
.../software-donation-guide_dev.json | 2 +-
.../contributor-guide/test-coverage-guide_dev.html | 2 +-
.../contributor-guide/test-coverage-guide_dev.json | 2 +-
en-us/docs/developers/developers_dev.html | 30 +--
en-us/docs/developers/developers_dev.json | 4 +-
en-us/docs/developers/guide_dev.html | 2 +-
en-us/docs/developers/guide_dev.json | 2 +-
en-us/docs/developers/user-guide/faq_dev.html | 2 +-
en-us/docs/developers/user-guide/faq_dev.json | 2 +-
en-us/docs/user/README.html | 2 +-
en-us/docs/user/SUMMARY.html | 2 +-
en-us/docs/user/benchmark-tool.html | 2 +-
en-us/docs/user/benchmark-tool.json | 2 +-
en-us/docs/user/best-practice.html | 2 +-
en-us/docs/user/capacity-plan.html | 2 +-
en-us/docs/user/configuration/annotation.html | 10 +-
en-us/docs/user/configuration/api.html | 44 ++--
en-us/docs/user/configuration/index.html | 2 +-
en-us/docs/user/configuration/properties.html | 2 +-
en-us/docs/user/configuration/xml.html | 18 +-
en-us/docs/user/coveragence.html | 2 +-
en-us/docs/user/coveragence.json | 2 +-
en-us/docs/user/demos/accesslog.html | 2 +-
en-us/docs/user/demos/async-call.html | 2 +-
en-us/docs/user/demos/attachment.html | 2 +-
en-us/docs/user/demos/callback-parameter.html | 2 +-
en-us/docs/user/demos/concurrency-control.html | 2 +-
en-us/docs/user/demos/config-connections.html | 2 +-
en-us/docs/user/demos/config-rule.html | 2 +-
en-us/docs/user/demos/context.html | 2 +-
en-us/docs/user/demos/delay-publish.html | 2 +-
en-us/docs/user/demos/distributed-transaction.html | 2 +-
en-us/docs/user/demos/dump.html | 2 +-
en-us/docs/user/demos/echo-service.html | 2 +-
en-us/docs/user/demos/events-notify.html | 2 +-
en-us/docs/user/demos/explicit-target.html | 2 +-
en-us/docs/user/demos/fault-tolerent-strategy.html | 2 +-
en-us/docs/user/demos/generic-reference.html | 6 +-
en-us/docs/user/demos/generic-service.html | 4 +-
en-us/docs/user/demos/graceful-shutdown.html | 2 +-
en-us/docs/user/demos/group-merger.html | 2 +-
en-us/docs/user/demos/group-merger.json | 2 +-
en-us/docs/user/demos/hostname-binding.html | 2 +-
en-us/docs/user/demos/index.html | 2 +-
en-us/docs/user/demos/introduction.html | 2 +-
en-us/docs/user/demos/lazy-connect.html | 2 +-
en-us/docs/user/demos/loadbalance.html | 2 +-
en-us/docs/user/demos/local-call.html | 2 +-
en-us/docs/user/demos/local-mock.html | 2 +-
en-us/docs/user/demos/local-stub.html | 2 +-
en-us/docs/user/demos/logger-strategy.html | 2 +-
en-us/docs/user/demos/multi-protocols.html | 2 +-
en-us/docs/user/demos/multi-registry.html | 2 +-
en-us/docs/user/demos/multi-versions.html | 2 +-
en-us/docs/user/demos/netty4.html | 2 +-
en-us/docs/user/demos/parameter-validation.html | 56 ++--
en-us/docs/user/demos/parameter-validation.json | 2 +-
en-us/docs/user/demos/preflight-check.html | 2 +-
en-us/docs/user/demos/reference-config-cache.html | 2 +-
en-us/docs/user/demos/registry-only.html | 2 +-
en-us/docs/user/demos/result-cache.html | 2 +-
en-us/docs/user/demos/result-cache.json | 2 +-
en-us/docs/user/demos/routing-rule.html | 2 +-
en-us/docs/user/demos/serialization.html | 2 +-
en-us/docs/user/demos/service-container.html | 2 +-
en-us/docs/user/demos/service-downgrade.html | 2 +-
en-us/docs/user/demos/service-group.html | 2 +-
en-us/docs/user/demos/static-service.html | 2 +-
en-us/docs/user/demos/stickiness.html | 2 +-
en-us/docs/user/demos/subscribe-only.html | 2 +-
en-us/docs/user/demos/thread-model.html | 2 +-
en-us/docs/user/demos/token-authorization.html | 2 +-
en-us/docs/user/dependencies.html | 2 +-
en-us/docs/user/maturity.html | 2 +-
en-us/docs/user/perf-test.html | 2 +-
en-us/docs/user/preface/architecture.html | 2 +-
en-us/docs/user/preface/background.html | 2 +-
en-us/docs/user/preface/index.html | 2 +-
en-us/docs/user/preface/requirements.html | 2 +-
en-us/docs/user/preface/usage.html | 8 +-
en-us/docs/user/quick-start.html | 4 +-
en-us/docs/user/recommend.html | 6 +-
en-us/docs/user/references/api.html | 2 +-
en-us/docs/user/references/maven.html | 6 +-
en-us/docs/user/references/protocol/dubbo.html | 2 +-
en-us/docs/user/references/protocol/hessian.html | 2 +-
en-us/docs/user/references/protocol/http.html | 2 +-
.../user/references/protocol/introduction.html | 2 +-
en-us/docs/user/references/protocol/memcached.html | 2 +-
en-us/docs/user/references/protocol/redis.html | 2 +-
en-us/docs/user/references/protocol/rest.html | 62 ++---
en-us/docs/user/references/protocol/rmi.html | 4 +-
en-us/docs/user/references/protocol/thrift.html | 2 +-
en-us/docs/user/references/protocol/thrift.json | 2 +-
.../docs/user/references/protocol/webservice.html | 2 +-
en-us/docs/user/references/qos.html | 6 +-
.../user/references/registry/introduction.html | 2 +-
en-us/docs/user/references/registry/multicast.html | 2 +-
en-us/docs/user/references/registry/redis.html | 2 +-
en-us/docs/user/references/registry/simple.html | 2 +-
en-us/docs/user/references/registry/zookeeper.html | 2 +-
en-us/docs/user/references/telnet.html | 2 +-
.../user/references/xml/dubbo-application.html | 2 +-
en-us/docs/user/references/xml/dubbo-argument.html | 2 +-
en-us/docs/user/references/xml/dubbo-consumer.html | 2 +-
en-us/docs/user/references/xml/dubbo-method.html | 2 +-
en-us/docs/user/references/xml/dubbo-module.html | 2 +-
en-us/docs/user/references/xml/dubbo-monitor.html | 2 +-
.../docs/user/references/xml/dubbo-parameter.html | 2 +-
en-us/docs/user/references/xml/dubbo-protocol.html | 2 +-
en-us/docs/user/references/xml/dubbo-provider.html | 2 +-
.../docs/user/references/xml/dubbo-reference.html | 2 +-
en-us/docs/user/references/xml/dubbo-registry.html | 2 +-
en-us/docs/user/references/xml/dubbo-service.html | 2 +-
en-us/docs/user/references/xml/introduction.html | 2 +-
en-us/docs/user/rest.html | 50 ++--
en-us/docs/user/simple-monitor.html | 22 +-
en-us/index.html | 2 +-
md_json/blog.json | 2 +-
zh-cn/blog/apachecon-na-2018.html | 2 +-
.../blog/build-new-docker-image-in-dockerhub.html | 2 +-
.../blog/build-new-docker-image-in-dockerhub.json | 2 +-
zh-cn/blog/download.html | 152 +++++------
zh-cn/blog/download.json | 4 +-
zh-cn/blog/dubbo-101.html | 48 ++--
zh-cn/blog/dubbo-27-features.html | 2 +-
zh-cn/blog/dubbo-27-features.json | 2 +-
zh-cn/blog/dubbo-admin.html | 4 +-
zh-cn/blog/dubbo-admin.json | 2 +-
zh-cn/blog/dubbo-annotation-driven.html | 6 +-
zh-cn/blog/dubbo-annotation.html | 8 +-
...o-basic-usage-dubbo-consumer-configuration.html | 38 +--
...o-basic-usage-dubbo-provider-configuration.html | 26 +-
zh-cn/blog/dubbo-cluster-error-handling.html | 4 +-
zh-cn/blog/dubbo-compatible.html | 2 +-
zh-cn/blog/dubbo-context-information.html | 2 +-
zh-cn/blog/dubbo-contribute-to-opensource.html | 2 +-
zh-cn/blog/dubbo-contribute-to-opensource.json | 2 +-
zh-cn/blog/dubbo-copywriting-style.html | 2 +-
zh-cn/blog/dubbo-echo-test.html | 2 +-
zh-cn/blog/dubbo-externalized-configuration.html | 38 +--
zh-cn/blog/dubbo-fescar.html | 4 +-
zh-cn/blog/dubbo-generic-invoke.html | 2 +-
zh-cn/blog/dubbo-gracefully-shutdown.html | 2 +-
zh-cn/blog/dubbo-heartbeat-design.html | 4 +-
zh-cn/blog/dubbo-integrate-with-hystrix.html | 2 +-
zh-cn/blog/dubbo-integrate-with-hystrix.json | 2 +-
zh-cn/blog/dubbo-invoke.html | 4 +-
zh-cn/blog/dubbo-k8s.html | 2 +-
zh-cn/blog/dubbo-loadbalance.html | 2 +-
zh-cn/blog/dubbo-local-call.html | 2 +-
zh-cn/blog/dubbo-local-call.json | 2 +-
zh-cn/blog/dubbo-meet-arthas.html | 4 +-
zh-cn/blog/dubbo-meet-arthas.json | 2 +-
zh-cn/blog/dubbo-meetup-beijing-may-12th-2018.html | 2 +-
zh-cn/blog/dubbo-meetup-chengdu.html | 2 +-
zh-cn/blog/dubbo-meetup-hangzhou.html | 2 +-
.../blog/dubbo-meetup-shanghai-jun-23rd-2018.html | 2 +-
zh-cn/blog/dubbo-meetup-shenzhen.html | 2 +-
zh-cn/blog/dubbo-mesh-in-thinking.html | 2 +-
zh-cn/blog/dubbo-mesh-service-mesh-exploring.html | 2 +-
zh-cn/blog/dubbo-network-interfaces.html | 6 +-
zh-cn/blog/dubbo-new-async.html | 10 +-
zh-cn/blog/dubbo-new-async.json | 2 +-
zh-cn/blog/dubbo-protocol.html | 2 +-
zh-cn/blog/dubbo-registry-nacos-integration.html | 22 +-
zh-cn/blog/dubbo-registry-nacos-integration.json | 2 +-
zh-cn/blog/dubbo-rest.html | 6 +-
zh-cn/blog/dubbo-stub-mock.html | 2 +-
zh-cn/blog/dubbo-stub-mock.json | 2 +-
zh-cn/blog/dubbo-zk.html | 4 +-
zh-cn/blog/dubbo2-js.html | 2 +-
zh-cn/blog/dubbo2-js.json | 2 +-
zh-cn/blog/dubboAsync_client.html | 4 +-
zh-cn/blog/dubboAsync_server.html | 2 +-
zh-cn/blog/first-dubbo-filter.html | 12 +-
zh-cn/blog/gsoc-2018.html | 2 +-
zh-cn/blog/how-to-involve-dubbo-community.html | 2 +-
zh-cn/blog/how-to-involve-dubbo-community.json | 2 +-
zh-cn/blog/index.html | 2 +-
zh-cn/blog/introduction-to-dubbo-qos.html | 2 +-
zh-cn/blog/introduction-to-dubbo-spi-2.html | 18 +-
zh-cn/blog/introduction-to-dubbo-spi.html | 2 +-
zh-cn/blog/introduction-to-dubbo-url.html | 8 +-
zh-cn/blog/introduction-to-dubbo-url.json | 2 +-
zh-cn/blog/meet-dubbo.html | 2 +-
zh-cn/blog/optimization-branch-prediction.html | 2 +-
zh-cn/blog/optimization-branch-prediction.json | 2 +-
zh-cn/blog/pinpoint.html | 2 +-
zh-cn/blog/prepare-an-apache-release.html | 8 +-
zh-cn/blog/prepare-an-apache-release.json | 2 +-
zh-cn/blog/qcon-beijing-2018.html | 2 +-
zh-cn/blog/sentinel-introduction-for-dubbo.html | 2 +-
zh-cn/blog/sentinel-introduction-for-dubbo.json | 2 +-
zh-cn/blog/service-and-version.html | 12 +-
zh-cn/blog/service-test.html | 2 +-
.../spring-boot-dubbo-start-stop-analysis.html | 2 +-
.../spring-boot-dubbo-start-stop-analysis.json | 2 +-
zh-cn/blog/test-verification.html | 10 +-
zh-cn/blog/tracing-with-skywalking.html | 4 +-
zh-cn/blog/use-zipkin-in-dubbo.html | 8 +-
zh-cn/community/index.html | 2 +-
zh-cn/docs/admin/README.html | 2 +-
zh-cn/docs/admin/SUMMARY.html | 2 +-
zh-cn/docs/admin/install/admin-console.html | 2 +-
zh-cn/docs/admin/install/admin-console.json | 2 +-
zh-cn/docs/admin/install/consumer-demo.html | 2 +-
zh-cn/docs/admin/install/consumer-demo.json | 2 +-
zh-cn/docs/admin/install/introduction.html | 2 +-
zh-cn/docs/admin/install/provider-demo.html | 2 +-
zh-cn/docs/admin/install/provider-demo.json | 2 +-
zh-cn/docs/admin/install/redis.html | 2 +-
.../docs/admin/install/simple-monitor-center.html | 2 +-
.../docs/admin/install/simple-registry-center.html | 2 +-
zh-cn/docs/admin/install/zookeeper.html | 2 +-
zh-cn/docs/admin/introduction.html | 10 +-
zh-cn/docs/admin/introduction.json | 2 +-
zh-cn/docs/admin/ops/dubbo-ops.html | 2 +-
zh-cn/docs/admin/ops/introduction.html | 2 +-
zh-cn/docs/admin/ops/pinpoint.html | 2 +-
zh-cn/docs/admin/ops/skywalking.html | 4 +-
zh-cn/docs/admin/serviceGovernance.html | 2 +-
zh-cn/docs/admin/serviceSearch.html | 2 +-
zh-cn/docs/admin/serviceTest.html | 2 +-
zh-cn/docs/dev/README.html | 2 +-
zh-cn/docs/dev/SPI.html | 38 +--
zh-cn/docs/dev/SUMMARY.html | 2 +-
zh-cn/docs/dev/TCK.html | 2 +-
zh-cn/docs/dev/build.html | 2 +-
zh-cn/docs/dev/build.json | 2 +-
zh-cn/docs/dev/checklist.html | 2 +-
zh-cn/docs/dev/code-smell.html | 12 +-
zh-cn/docs/dev/coding.html | 2 +-
zh-cn/docs/dev/contract.html | 2 +-
zh-cn/docs/dev/contribution.html | 2 +-
zh-cn/docs/dev/design.html | 2 +-
zh-cn/docs/dev/implementation.html | 10 +-
zh-cn/docs/dev/impls/cache.html | 14 +-
zh-cn/docs/dev/impls/cluster.html | 6 +-
zh-cn/docs/dev/impls/compiler.html | 6 +-
zh-cn/docs/dev/impls/container.html | 8 +-
zh-cn/docs/dev/impls/dispatcher.html | 6 +-
zh-cn/docs/dev/impls/exchanger.html | 16 +-
zh-cn/docs/dev/impls/exporter-listener.html | 8 +-
zh-cn/docs/dev/impls/extension-factory.html | 6 +-
zh-cn/docs/dev/impls/filter.html | 6 +-
zh-cn/docs/dev/impls/introduction.html | 2 +-
zh-cn/docs/dev/impls/invoker-listener.html | 10 +-
zh-cn/docs/dev/impls/load-balance.html | 8 +-
zh-cn/docs/dev/impls/logger-adapter.html | 10 +-
zh-cn/docs/dev/impls/merger.html | 6 +-
zh-cn/docs/dev/impls/monitor.html | 10 +-
zh-cn/docs/dev/impls/networker.html | 8 +-
zh-cn/docs/dev/impls/page.html | 6 +-
zh-cn/docs/dev/impls/protocol.html | 22 +-
zh-cn/docs/dev/impls/proxy-factory.html | 8 +-
zh-cn/docs/dev/impls/registry.html | 52 ++--
zh-cn/docs/dev/impls/remoting.html | 18 +-
zh-cn/docs/dev/impls/router.html | 6 +-
zh-cn/docs/dev/impls/serialize.html | 8 +-
zh-cn/docs/dev/impls/status-checker.html | 6 +-
zh-cn/docs/dev/impls/telnet-handler.html | 8 +-
zh-cn/docs/dev/impls/threadpool.html | 6 +-
zh-cn/docs/dev/impls/validation.html | 10 +-
zh-cn/docs/dev/introduction.html | 2 +-
zh-cn/docs/dev/principals/code-detail.html | 2 +-
zh-cn/docs/dev/principals/configuration.html | 2 +-
zh-cn/docs/dev/principals/dummy.html | 286 ++++++++++----------
zh-cn/docs/dev/principals/expansibility.html | 2 +-
zh-cn/docs/dev/principals/extension.html | 70 ++---
zh-cn/docs/dev/principals/general-knowledge.html | 2 +-
zh-cn/docs/dev/principals/introduction.html | 2 +-
zh-cn/docs/dev/principals/robustness.html | 2 +-
zh-cn/docs/dev/release.html | 2 +-
.../committer-guide/apache-dubbo-page_dev.html | 2 +-
.../committer-guide/apache-dubbo-page_dev.json | 2 +-
.../committer-guide/label-an-issue-guide_dev.html | 2 +-
.../committer-guide/new-committer-guide_dev.html | 2 +-
.../committer-guide/release-guide_dev.html | 8 +-
.../committer-guide/release-guide_dev.json | 2 +-
.../committer-guide/website-guide_dev.html | 2 +-
.../committer-guide/website-guide_dev.json | 2 +-
.../contributor-guide/become-a-committer_dev.html | 2 +-
.../contributor-guide/cla-signing-guide_dev.html | 2 +-
.../dubbo-extension-guide_dev.html | 2 +-
.../dubbo-extension-guide_dev.json | 2 +-
.../mailing-list-subscription-guide_dev.html | 2 +-
.../mailing-list-subscription-guide_dev.json | 2 +-
.../new-contributor-guide_dev.html | 2 +-
.../new-contributor-guide_dev.json | 2 +-
.../reporting-security-issues_dev.html | 2 +-
.../reporting-security-issues_dev.json | 2 +-
.../software-donation-guide_dev.html | 4 +-
.../software-donation-guide_dev.json | 2 +-
.../contributor-guide/test-coverage-guide_dev.html | 2 +-
.../contributor-guide/test-coverage-guide_dev.json | 2 +-
zh-cn/docs/developers/developers_dev.html | 30 +--
zh-cn/docs/developers/developers_dev.json | 4 +-
zh-cn/docs/developers/guide_dev.html | 2 +-
zh-cn/docs/developers/guide_dev.json | 2 +-
zh-cn/docs/developers/user-guide/faq_dev.html | 2 +-
zh-cn/docs/developers/user-guide/faq_dev.json | 2 +-
.../docs/source_code_guide/adaptive-extension.html | 82 +++---
zh-cn/docs/source_code_guide/cluster.html | 36 +--
zh-cn/docs/source_code_guide/directory.html | 22 +-
zh-cn/docs/source_code_guide/dubbo-spi.html | 22 +-
zh-cn/docs/source_code_guide/export-service.html | 52 ++--
zh-cn/docs/source_code_guide/export-service.json | 2 +-
zh-cn/docs/source_code_guide/loadbalance.html | 60 ++---
zh-cn/docs/source_code_guide/loadbalance.json | 2 +-
zh-cn/docs/source_code_guide/refer-service.html | 36 +--
zh-cn/docs/source_code_guide/refer-service.json | 2 +-
zh-cn/docs/source_code_guide/router.html | 44 ++--
.../service-invoking-process.html | 224 ++++++++--------
zh-cn/docs/user/README.html | 2 +-
zh-cn/docs/user/SUMMARY.html | 2 +-
zh-cn/docs/user/benchmark-tool.html | 2 +-
zh-cn/docs/user/benchmark-tool.json | 2 +-
zh-cn/docs/user/best-practice.html | 2 +-
zh-cn/docs/user/capacity-plan.html | 2 +-
zh-cn/docs/user/configuration/annotation.html | 6 +-
zh-cn/docs/user/configuration/annotation.json | 2 +-
zh-cn/docs/user/configuration/api.html | 38 +--
zh-cn/docs/user/configuration/config-center.html | 2 +-
.../configuration/configuration-load-process.html | 24 +-
.../configuration/configuration-load-process.json | 2 +-
zh-cn/docs/user/configuration/index.html | 2 +-
.../user/configuration/properties-deprecated.html | 2 +-
zh-cn/docs/user/configuration/xml.html | 6 +-
zh-cn/docs/user/configuration/xml.json | 2 +-
zh-cn/docs/user/coveragence.html | 2 +-
zh-cn/docs/user/coveragence.json | 2 +-
zh-cn/docs/user/demos/accesslog.html | 2 +-
zh-cn/docs/user/demos/async-call-deprecated.html | 18 +-
zh-cn/docs/user/demos/async-call.html | 4 +-
.../docs/user/demos/async-execute-on-provider.html | 2 +-
zh-cn/docs/user/demos/attachment.html | 6 +-
zh-cn/docs/user/demos/callback-parameter.html | 24 +-
zh-cn/docs/user/demos/concurrency-control.html | 2 +-
zh-cn/docs/user/demos/config-connections.html | 2 +-
zh-cn/docs/user/demos/config-rule-deprecated.html | 2 +-
zh-cn/docs/user/demos/config-rule.html | 2 +-
zh-cn/docs/user/demos/context.html | 6 +-
zh-cn/docs/user/demos/delay-publish.html | 2 +-
zh-cn/docs/user/demos/distributed-transaction.html | 2 +-
zh-cn/docs/user/demos/dump.html | 2 +-
zh-cn/docs/user/demos/echo-service.html | 10 +-
zh-cn/docs/user/demos/events-notify.html | 6 +-
zh-cn/docs/user/demos/explicit-target.html | 2 +-
zh-cn/docs/user/demos/fault-tolerent-strategy.html | 2 +-
zh-cn/docs/user/demos/generic-reference.html | 42 +--
zh-cn/docs/user/demos/generic-service.html | 16 +-
zh-cn/docs/user/demos/graceful-shutdown.html | 2 +-
zh-cn/docs/user/demos/group-merger.html | 2 +-
zh-cn/docs/user/demos/hostname-binding.html | 2 +-
zh-cn/docs/user/demos/index.html | 2 +-
zh-cn/docs/user/demos/introduction.html | 2 +-
zh-cn/docs/user/demos/lazy-connect.html | 2 +-
zh-cn/docs/user/demos/loadbalance.html | 2 +-
zh-cn/docs/user/demos/local-call.html | 2 +-
zh-cn/docs/user/demos/local-mock.html | 2 +-
zh-cn/docs/user/demos/local-stub.html | 6 +-
zh-cn/docs/user/demos/logger-strategy.html | 2 +-
zh-cn/docs/user/demos/multi-protocols.html | 6 +-
zh-cn/docs/user/demos/multi-registry.html | 2 +-
zh-cn/docs/user/demos/multi-versions.html | 2 +-
zh-cn/docs/user/demos/netty4.html | 2 +-
zh-cn/docs/user/demos/parameter-validation.html | 56 ++--
zh-cn/docs/user/demos/parameter-validation.json | 2 +-
zh-cn/docs/user/demos/preflight-check.html | 4 +-
zh-cn/docs/user/demos/reference-config-cache.html | 2 +-
zh-cn/docs/user/demos/registry-only.html | 2 +-
zh-cn/docs/user/demos/result-cache.html | 2 +-
zh-cn/docs/user/demos/result-cache.json | 2 +-
zh-cn/docs/user/demos/routing-rule-deprecated.html | 2 +-
zh-cn/docs/user/demos/routing-rule.html | 2 +-
zh-cn/docs/user/demos/routing-rule.json | 2 +-
zh-cn/docs/user/demos/serialization.html | 2 +-
zh-cn/docs/user/demos/service-container.html | 2 +-
zh-cn/docs/user/demos/service-downgrade.html | 2 +-
zh-cn/docs/user/demos/service-group.html | 2 +-
zh-cn/docs/user/demos/set-host.html | 2 +-
zh-cn/docs/user/demos/set-host.json | 2 +-
zh-cn/docs/user/demos/simplify-registry-data.html | 6 +-
zh-cn/docs/user/demos/static-service.html | 2 +-
zh-cn/docs/user/demos/stickiness.html | 2 +-
zh-cn/docs/user/demos/subscribe-only.html | 2 +-
zh-cn/docs/user/demos/thread-model.html | 2 +-
zh-cn/docs/user/demos/token-authorization.html | 2 +-
zh-cn/docs/user/dependencies.html | 2 +-
zh-cn/docs/user/maturity.html | 2 +-
zh-cn/docs/user/perf-test.html | 2 +-
zh-cn/docs/user/preface/architecture.html | 2 +-
zh-cn/docs/user/preface/background.html | 2 +-
zh-cn/docs/user/preface/index.html | 2 +-
zh-cn/docs/user/preface/requirements.html | 2 +-
zh-cn/docs/user/preface/usage.html | 8 +-
zh-cn/docs/user/quick-start.html | 26 +-
zh-cn/docs/user/recommend.html | 6 +-
zh-cn/docs/user/recommend.json | 2 +-
zh-cn/docs/user/references/api.html | 2 +-
zh-cn/docs/user/references/maven.html | 6 +-
.../user/references/metadata/introduction.html | 6 +-
.../user/references/metadata/metadata-redis.html | 2 +-
.../references/metadata/metadata-zookeeper.html | 2 +-
zh-cn/docs/user/references/protocol/dubbo.html | 2 +-
zh-cn/docs/user/references/protocol/hessian.html | 2 +-
zh-cn/docs/user/references/protocol/http.html | 2 +-
.../user/references/protocol/introduction.html | 2 +-
zh-cn/docs/user/references/protocol/memcached.html | 2 +-
zh-cn/docs/user/references/protocol/redis.html | 2 +-
zh-cn/docs/user/references/protocol/rest.html | 62 ++---
zh-cn/docs/user/references/protocol/rmi.html | 4 +-
zh-cn/docs/user/references/protocol/thrift.html | 2 +-
zh-cn/docs/user/references/protocol/thrift.json | 2 +-
.../docs/user/references/protocol/webservice.html | 2 +-
zh-cn/docs/user/references/qos.html | 2 +-
.../user/references/registry/introduction.html | 2 +-
zh-cn/docs/user/references/registry/multicast.html | 2 +-
zh-cn/docs/user/references/registry/redis.html | 2 +-
zh-cn/docs/user/references/registry/simple.html | 2 +-
zh-cn/docs/user/references/registry/zookeeper.html | 2 +-
zh-cn/docs/user/references/telnet.html | 2 +-
.../user/references/xml/dubbo-application.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-argument.html | 2 +-
.../user/references/xml/dubbo-config-center.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-consumer.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-method.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-module.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-monitor.html | 2 +-
.../docs/user/references/xml/dubbo-parameter.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-protocol.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-provider.html | 2 +-
.../docs/user/references/xml/dubbo-reference.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-registry.html | 2 +-
zh-cn/docs/user/references/xml/dubbo-service.html | 2 +-
zh-cn/docs/user/references/xml/introduction.html | 2 +-
zh-cn/docs/user/rest.html | 70 ++---
zh-cn/docs/user/serialization.html | 2 +-
zh-cn/docs/user/simple-monitor.html | 18 +-
zh-cn/docs/user/versions/index.html | 2 +-
zh-cn/docs/user/versions/version-270.html | 2 +-
zh-cn/docs/user/versions/version-270.json | 2 +-
zh-cn/index.html | 2 +-
579 files changed, 2225 insertions(+), 2225 deletions(-)
diff --git a/build/blog.js b/build/blog.js
index 6104883..e7e5939 100644
--- a/build/blog.js
+++ b/build/blog.js
@@ -3,4 +3,4 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/blogDetail.js b/build/blogDetail.js
index 5dbf9c5..e600c0f 100644
--- a/build/blogDetail.js
+++ b/build/blogDetail.js
@@ -3,4 +3,4 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var u in r)i.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/community.js b/build/community.js
index 65d4765..cbea2d7 100644
--- a/build/community.js
+++ b/build/community.js
@@ -3,4 +3,4 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var l in r)i.call(r,l)&&r[l]&&e.push(l)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var a=n.apply(null,r);a&&e.push(a)}else if("object"===o)for(var l in r)i.call(r,l)&&r[l]&&e.push(l)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/documentation.js b/build/documentation.js
index c8f74fa..89977f1 100644
--- a/build/documentation.js
+++ b/build/documentation.js
@@ -3,4 +3,4 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=n.apply(null,r);l&&e.push(l)}else if("object"===o)for(var s in r)i.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var l=n.apply(null,r);l&&e.push(l)}else if("object"===o)for(var s in r)i.call(r,s)&&r[s]&&e.push(s)}}return e.join(" ")}var i={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/build/home.js b/build/home.js
index 02003b3..e81a185 100644
--- a/build/home.js
+++ b/build/home.js
@@ -3,4 +3,4 @@
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
-!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var i=n.apply(null,r);i&&e.push(i)}else if("object"===o)for(var u in r)a.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var a={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
+!function(){"use strict";function n(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)&&r.length){var i=n.apply(null,r);i&&e.push(i)}else if("object"===o)for(var u in r)a.call(r,u)&&r[u]&&e.push(u)}}return e.join(" ")}var a={}.hasOwnProperty;void 0!==e&&e.exports?(n.default=n,e.exports=n):(r=[],void 0!==(o=function(){return n}.apply(t,r))&&(e.exports=o))}()},function(e,t,n){"use strict";funct [...]
\ No newline at end of file
diff --git a/en-us/blog/apachecon-na-2018.html b/en-us/blog/apachecon-na-2018.html
index 3857d54..acd2ee9 100644
--- a/en-us/blog/apachecon-na-2018.html
+++ b/en-us/blog/apachecon-na-2018.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/apachecon-na-2018.json b/en-us/blog/apachecon-na-2018.json
index ad3f6cd..2351fd0 100644
--- a/en-us/blog/apachecon-na-2018.json
+++ b/en-us/blog/apachecon-na-2018.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, ApacheCon NA",
"description": "This article will introduce you that the ApacheCon NA schedule has been announced attention."
}
-}
+}
\ No newline at end of file
diff --git a/en-us/blog/download.html b/en-us/blog/download.html
index 67f74e2..ab3e720 100644
--- a/en-us/blog/download.html
+++ b/en-us/blog/download.html
@@ -17,123 +17,123 @@
<p>you can follow these <a href="https://www.apache.org/info/verification">procedures</a> and the <a href="https://www.apache.org/dist/incubator/dubbo/KEYS">KEYS</a> file to verify the download files</p>
<h2>Apache Dubbo</h2>
<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo">https://github.com/apache/dubbo</a> <br>
-Release Notes: <a href="https://github.com/apache/dubbo/releases">https://github.com/apache/dubbo/releases</a></p>
+<p>GitHub: <a href="https://github.com/apache/incubator-dubbo">https://github.com/apache/incubator-dubbo</a> <br>
+Release Notes: <a href="https://github.com/apache/incubator-dubbo/releases">https://github.com/apache/incubator-dubbo/releases</a></p>
</blockquote>
<h3>2.7.1 (2019-03-26)</h3>
<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-2.7.1-src.zip">source</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-src.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-2.7.1-bin.zip">binary</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-bin.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-bin.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip">source</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip">binary</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.sha512">sha512</a></li>
</ul>
<h3>2.7.0 (2019-01-29)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.6 (2019-03-07)</h3>
<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-2.6.6-source-release.zip">source</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-2.6.6-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip">source</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip">binary</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.5 (2018-11-23)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.4 (2018-10-08)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.3 (2018-09-11)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.2 (2018-06-07)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.sha512">sha512</a></li>
</ul>
<h2>Dubbo Spring Boot Starter</h2>
<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo-spring-boot-project">https://github.com/apache/dubbo-spring-boot-project</a> <br>
-Release Notes: <a href="https://github.com/apache/dubbo-spring-boot-project/releases">https://github.com/apache/dubbo-spring-boot-project/releases</a></p>
+<p>GitHub: <a href="https://github.com/apache/incubator-dubbo-spring-boot-project">https://github.com/apache/incubator-dubbo-spring-boot-project</a> <br>
+Release Notes: <a href="https://github.com/apache/incubator-dubbo-spring-boot-project/releases">https://github.com/apache/incubator-dubbo-spring-boot-project/releases</a></p>
</blockquote>
<h3>2.7.1 (2019-04-09)</h3>
<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-source-release.zip">source</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip">source</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip">binary</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.7.0 (2019-02-14)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>0.2.1 (2019-01-27)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>0.1.2 (2019-01-27)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.sha512">sha512</a></li>
</ul>
<h2>Dubbo Admin</h2>
<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo-admin">https://github.com/apache/dubbo-admin</a> <br>
-Release Notes: <a href="https://github.com/apache/dubbo-admin/releases">https://github.com/apache/dubbo-admin/releases</a></p>
+<p>GitHub: <a href="https://github.com/apache/incubator-dubbo-admin">https://github.com/apache/incubator-dubbo-admin</a> <br>
+Release Notes: <a href="https://github.com/apache/incubator-dubbo-admin/releases">https://github.com/apache/incubator-dubbo-admin/releases</a></p>
</blockquote>
<h3>0.1 (2019-02-15)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-0.1-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-0.1-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-0.1-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.sha512">sha512</a></li>
</ul>
</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">Foundation</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">License</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">Events</a></ [...]
<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
@@ -152,4 +152,4 @@ Release Notes: <a href="https://github.com/apache/dubbo-admin/releases">https://
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/download.json b/en-us/blog/download.json
index 732305a..62a485c 100644
--- a/en-us/blog/download.json
+++ b/en-us/blog/download.json
@@ -1,10 +1,10 @@
{
"filename": "download.md",
- "__html": "<h1>Downloads</h1>\n<h2>Verification</h2>\n<p>you can follow these <a href=\"https://www.apache.org/info/verification\">procedures</a> and the <a href=\"https://www.apache.org/dist/incubator/dubbo/KEYS\">KEYS</a> file to verify the download files</p>\n<h2>Apache Dubbo</h2>\n<blockquote>\n<p>GitHub: <a href=\"https://github.com/apache/dubbo\">https://github.com/apache/dubbo</a> <br>\nRelease Notes: <a href=\"https://github.com/apache/dubbo/releases\">https://github.com/apache [...]
+ "__html": "<h1>Downloads</h1>\n<h2>Verification</h2>\n<p>you can follow these <a href=\"https://www.apache.org/info/verification\">procedures</a> and the <a href=\"https://www.apache.org/dist/incubator/dubbo/KEYS\">KEYS</a> file to verify the download files</p>\n<h2>Apache Dubbo</h2>\n<blockquote>\n<p>GitHub: <a href=\"https://github.com/apache/incubator-dubbo\">https://github.com/apache/incubator-dubbo</a> <br>\nRelease Notes: <a href=\"https://github.com/apache/incubator-dubbo/releas [...]
"link": "/en-us/blog/download.html",
"meta": {
"title": "Downloads",
"keywords": "Dubbo, Downloads, Version",
"description": "This article will introduce you how to understand the details of each version and upgrade matters needing attention."
}
-}
+}
\ No newline at end of file
diff --git a/en-us/blog/dubbo-101.html b/en-us/blog/dubbo-101.html
index 0ccafbe..6f54f0b 100644
--- a/en-us/blog/dubbo-101.html
+++ b/en-us/blog/dubbo-101.html
@@ -194,7 +194,7 @@ INFO] Scanning <span class="hljs-keyword">for</span> projects...
<p>Run the service provider by the following maven command lines:</p>
<pre><code class="language-bash">$ mvn -Djava.net.preferIPv4Stack=<span class="hljs-literal">true</span> -Dexec.mainClass=org.apache.dubbo.samples.provider.Application <span class="hljs-built_in">exec</span>:java
[INFO] Scanning <span class="hljs-keyword">for</span> projects...
-[INFO]
+[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building dubbo-samples-api 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
@@ -210,7 +210,7 @@ first-dubbo-provider is running.
<p>Run the service consumer by the following maven command lines:</p>
<pre><code class="language-bash">$ mvn -Djava.net.preferIPv4Stack=<span class="hljs-literal">true</span> -Dexec.mainClass=org.apache.dubbo.samples.consumer.Application <span class="hljs-built_in">exec</span>:java
[INFO] Scanning <span class="hljs-keyword">for</span> projects...
-[INFO]
+[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building dubbo-samples-api 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
@@ -255,14 +255,14 @@ hi, dubbo
<p>Run it directly in IDE and here are the results:</p>
<pre><code class="language-bash">2018-05-28 16:59:38.072 INFO 59943 --- [ main] a.b.d.c.e.WelcomeLogoApplicationListener :
- ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
+ ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███
███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███
███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███
███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███
- ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
+ ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
:: Dubbo Spring Boot (v0.1.0) : https://github.com/dubbo/dubbo-spring-boot-project
@@ -285,14 +285,14 @@ hi, dubbo
Trying 127.0.0.1...
Connected to localhost.
Escape character is <span class="hljs-string">'^]'</span>.
- ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
+ ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ███ ███ ███ ███ ███ ███
███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███
███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███
███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███
███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███
- ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
+ ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
dubbo>
@@ -343,4 +343,4 @@ As Consumer side:
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-annotation.html b/en-us/blog/dubbo-annotation.html
index 9414c69..50b7c78 100644
--- a/en-us/blog/dubbo-annotation.html
+++ b/en-us/blog/dubbo-annotation.html
@@ -49,7 +49,7 @@
* <span class="hljs-doctag">@see</span> DubboComponentScan#basePackageClasses
*/</span>
<span class="hljs-meta">@AliasFor</span>(annotation = DubboComponentScan.class, attribute = <span class="hljs-string">"basePackageClasses"</span>)
- Class<?>[] scanBasePackageClasses() <span class="hljs-keyword">default</span> {};
+ Class<?>[] scanBasePackageClasses() <span class="hljs-keyword">default</span> {};
}
</code></pre>
<p>The <code>@bableDubbo</code> can be used to scan Dubbo's service provider (marked by <code>@Service</code>) and Dubbo's service consumer (marked by <code>Reference</code>) under the specified package name (via <code>scanBasePackages</code>) or in the specified class (via <code>scanBasePackageClasses</code>). After Dubbo's service providers and consumers have been scanned, they have been assembled corresponding and been initialized, and finally the service is exposed or referenced, if [...]
@@ -76,7 +76,7 @@
<span class="hljs-function">String <span class="hljs-title">group</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #5</span>
<span class="hljs-function"><span class="hljs-keyword">boolean</span> <span class="hljs-title">export</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">true</span></span>; <span class="hljs-comment">// #6</span>
<span class="hljs-function"><span class="hljs-keyword">boolean</span> <span class="hljs-title">register</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">true</span></span>; <span class="hljs-comment">// #7</span>
-
+
<span class="hljs-function">String <span class="hljs-title">application</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #8</span>
<span class="hljs-function">String <span class="hljs-title">module</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #9</span>
<span class="hljs-function">String <span class="hljs-title">provider</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #10</span>
@@ -126,7 +126,7 @@
<span class="hljs-function">String <span class="hljs-title">version</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #4</span>
<span class="hljs-function">String <span class="hljs-title">group</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #5</span>
<span class="hljs-function">String <span class="hljs-title">url</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #6</span>
-
+
<span class="hljs-function">String <span class="hljs-title">application</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #7</span>
<span class="hljs-function">String <span class="hljs-title">module</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #8</span>
<span class="hljs-function">String <span class="hljs-title">consumer</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #9</span>
@@ -332,4 +332,4 @@ result: hello, annotation
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html b/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html
index 87aa956..97939b5 100644
--- a/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html
+++ b/en-us/blog/dubbo-basic-usage-dubbo-provider-configuration.html
@@ -24,12 +24,12 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="hello-world-app" />
- <dubbo:registry address="multicast://224.5.6.7:1234" />
- <dubbo:protocol name="dubbo" port="20880" />
- <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />
- <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+ <dubbo:application name="hello-world-app" />
+ <dubbo:registry address="multicast://224.5.6.7:1234" />
+ <dubbo:protocol name="dubbo" port="20880" />
+ <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />
+ <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>
</code></pre>
<p>In the example above,note the way to write dubbo schema:</p>
@@ -268,7 +268,7 @@ dubbo.protocol.port=28080
<pre><code>import com.alibaba.dubbo.config.annotation.Service;
@Service(timeout = 5000)
-public class AnnotateServiceImpl implements AnnotateService {
+public class AnnotateServiceImpl implements AnnotateService {
// ...
}
</code></pre>
@@ -376,12 +376,12 @@ Implement UserReadService, and deploy current implementation in the Provider's a
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="hello-world-app" />
- <dubbo:registry address="multicast://224.5.6.7:1234" />
- <dubbo:protocol name="dubbo" port="20880" />
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+ <dubbo:application name="hello-world-app" />
+ <dubbo:registry address="multicast://224.5.6.7:1234" />
+ <dubbo:protocol name="dubbo" port="20880" />
<bean id="userReadService" class="com.package.UserReadServiceImpl"/>
- <dubbo:service interface="com.package.UserReadService" ref="userReadService" />
+ <dubbo:service interface="com.package.UserReadService" ref="userReadService" />
</beans>
</code></pre>
<p>For the other modes of Dubbo configuration, please refer to the related configurations in the previous chapter, or use the integrated Dubbo Spring Boot starter method.</p>
@@ -402,4 +402,4 @@ Implement UserReadService, and deploy current implementation in the Provider's a
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-fescar.html b/en-us/blog/dubbo-fescar.html
index 837a292..22e68f0 100644
--- a/en-us/blog/dubbo-fescar.html
+++ b/en-us/blog/dubbo-fescar.html
@@ -70,7 +70,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StorageServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">StorageService</span> </span>{
<span class="hljs-keyword">private</span> StorageDAO storageDAO;
-
+
<span class="hljs-meta">@Override</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">deduct</span><span class="hljs-params">(String commodityCode, <span class="hljs-keyword">int</span> count)</span> </span>{
Storage storage = <span class="hljs-keyword">new</span> Storage();
@@ -212,4 +212,4 @@ sh fescar-server.sh 8091 /home/admin/fescar/data/
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-generic-invoke.html b/en-us/blog/dubbo-generic-invoke.html
index 034045d..b04490a 100644
--- a/en-us/blog/dubbo-generic-invoke.html
+++ b/en-us/blog/dubbo-generic-invoke.html
@@ -172,4 +172,4 @@ System.out.println(helloService.hello(<span class="hljs-string">"community"</spa
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-invoke.html b/en-us/blog/dubbo-invoke.html
index 50c501c..0c6df0d 100644
--- a/en-us/blog/dubbo-invoke.html
+++ b/en-us/blog/dubbo-invoke.html
@@ -190,4 +190,4 @@ callbackService.addListener(<span class="hljs-string">"foo.bar"</span>, <span cl
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-k8s.html b/en-us/blog/dubbo-k8s.html
index b9ded7a..156af22 100644
--- a/en-us/blog/dubbo-k8s.html
+++ b/en-us/blog/dubbo-k8s.html
@@ -187,4 +187,4 @@ Dubbo's consumer directly discovers the corresponding service endpoints of Kuber
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-loadbalance.html b/en-us/blog/dubbo-loadbalance.html
index 5f62d6b..0a9d7d6 100644
--- a/en-us/blog/dubbo-loadbalance.html
+++ b/en-us/blog/dubbo-loadbalance.html
@@ -255,4 +255,4 @@ This is a simple text file. The file contents are as follows:</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html b/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html
index b40748e..ed22e2d 100644
--- a/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html
+++ b/en-us/blog/dubbo-meetup-beijing-may-12th-2018.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-chengdu.html b/en-us/blog/dubbo-meetup-chengdu.html
index 765e5bf..df891cb 100644
--- a/en-us/blog/dubbo-meetup-chengdu.html
+++ b/en-us/blog/dubbo-meetup-chengdu.html
@@ -39,4 +39,4 @@ Sign up link:<a href="http://www.huodongxing.com/event/7453091088400">http://w
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-hangzhou.html b/en-us/blog/dubbo-meetup-hangzhou.html
index 77b8973..6325ad9 100644
--- a/en-us/blog/dubbo-meetup-hangzhou.html
+++ b/en-us/blog/dubbo-meetup-hangzhou.html
@@ -40,4 +40,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html b/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
index 0805f38..d78cd3a 100644
--- a/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
+++ b/en-us/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-meetup-shenzhen.html b/en-us/blog/dubbo-meetup-shenzhen.html
index efcdbfa..1bac9bb 100644
--- a/en-us/blog/dubbo-meetup-shenzhen.html
+++ b/en-us/blog/dubbo-meetup-shenzhen.html
@@ -37,4 +37,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-new-async.html b/en-us/blog/dubbo-new-async.html
index a5492ca..bab522c 100644
--- a/en-us/blog/dubbo-new-async.html
+++ b/en-us/blog/dubbo-new-async.html
@@ -172,7 +172,7 @@ public interface GrettingServiceAsync extends GreetingsService {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"META-INF/spring/async-consumer.xml"});
context.start();
final AsyncService asyncService = (AsyncService) context.getBean("asyncService");
-
+
CompletableFuture<String> future = asyncService.sayHello("async call request");
future.whenComplete((v, t) -> {
if (t != null) {
@@ -271,7 +271,7 @@ CompletableFuture<java.lang.String> sayHiAsync(java.lang.String name);
GreetingsServiceAsync greetingsService = (GreetingsServiceAsync) context.getBean("greetingsService");
CompletableFuture<String> future = greetingsService.sayHiAsync("async call reqeust");
System.out.println("async call ret :" + future.get());
-
+
System.in.read();
}
</code></pre>
@@ -333,7 +333,7 @@ CompletableFuture<java.lang.String> sayHiAsync(java.lang.String name);
AsyncService asyncService = (AsyncService) context.getBean("asyncService");
System.out.println(asyncService.sayHello("async call request"));
-
+
System.in.read();
}
</code></pre>
@@ -413,4 +413,4 @@ public class AsyncPostprocessFilter extends AbstractPostProcessFilter {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo-new-async.json b/en-us/blog/dubbo-new-async.json
index 800782b..a860f7a 100644
--- a/en-us/blog/dubbo-new-async.json
+++ b/en-us/blog/dubbo-new-async.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, asynchronous, async chain",
"description": "This article recalls how asynchronous call is implemented in Dubbo 2.6.x, and introduces the new way based on CompletableFuture in 2.7.0."
}
-}
+}
\ No newline at end of file
diff --git a/en-us/blog/dubbo-zk.html b/en-us/blog/dubbo-zk.html
index be66427..33eb2dd 100644
--- a/en-us/blog/dubbo-zk.html
+++ b/en-us/blog/dubbo-zk.html
@@ -275,4 +275,4 @@ JLine support is enabled
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo2-js.html b/en-us/blog/dubbo2-js.html
index 7c7d426..d341ef8 100644
--- a/en-us/blog/dubbo2-js.html
+++ b/en-us/blog/dubbo2-js.html
@@ -230,4 +230,4 @@ If you don't know much about the dubbo protocol and want to understand how it wo
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/dubbo2-js.json b/en-us/blog/dubbo2-js.json
index f3f33b8..fc52859 100644
--- a/en-us/blog/dubbo2-js.json
+++ b/en-us/blog/dubbo2-js.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Cross-language, Node, NodeJS, js",
"description": "This article introduces how to use Dubbo.js to implement cross-language calls."
}
-}
+}
\ No newline at end of file
diff --git a/en-us/blog/gsoc-2018.html b/en-us/blog/gsoc-2018.html
index d2028e1..57f7f7f 100644
--- a/en-us/blog/gsoc-2018.html
+++ b/en-us/blog/gsoc-2018.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/index.html b/en-us/blog/index.html
index 87997a2..f3aaf2c 100644
--- a/en-us/blog/index.html
+++ b/en-us/blog/index.html
@@ -29,4 +29,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/introduction-to-dubbo-qos.html b/en-us/blog/introduction-to-dubbo-qos.html
index c722750..db571b4 100644
--- a/en-us/blog/introduction-to-dubbo-qos.html
+++ b/en-us/blog/introduction-to-dubbo-qos.html
@@ -242,4 +242,4 @@ dubbo.application.qosAcceptForeignIp=false
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/introduction-to-dubbo-spi-2.html b/en-us/blog/introduction-to-dubbo-spi-2.html
index fae4dda..859ea3b 100644
--- a/en-us/blog/introduction-to-dubbo-spi-2.html
+++ b/en-us/blog/introduction-to-dubbo-spi-2.html
@@ -50,7 +50,7 @@ This is a static factory method that enters an extensible interface and returns
}
<span class="hljs-keyword">return</span> loader;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">ExtensionLoader</span><span class="hljs-params">(Class<?> type)</span> </span>{
<span class="hljs-keyword">this</span>.type = type;
objectFactory = (type == ExtensionFactory.class ? <span class="hljs-keyword">null</span> : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension());
@@ -83,7 +83,7 @@ This is a static factory method that enters an extensible interface and returns
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">private</span> T <span class="hljs-title">createExtension</span><span class="hljs-params">(String name)</span> </span>{
<span class="hljs-comment">// Get the extension class according to the name of extension point. For example, for LoadBalance, get the RandomLoadBalance class according to random</span>
Class<?> clazz = getExtensionClasses().get(name);
-
+
T instance = (T) EXTENSION_INSTANCES.get(clazz);
<span class="hljs-keyword">if</span> (instance == <span class="hljs-keyword">null</span>) {
<span class="hljs-comment">// Use reflection to call newInstance to create an example of an extension class</span>
@@ -168,7 +168,7 @@ This is a static factory method that enters an extensible interface and returns
&& method.getParameterTypes().length == <span class="hljs-number">1</span>
&& Modifier.isPublic(method.getModifiers())) {
Class<?> pt = method.getParameterTypes()[<span class="hljs-number">0</span>];
-
+
String property = method.getName().length() > <span class="hljs-number">3</span> ? method.getName().substring(<span class="hljs-number">3</span>, <span class="hljs-number">4</span>).toLowerCase() + method.getName().substring(<span class="hljs-number">4</span>) : <span class="hljs-string">""</span>;
Object object = objectFactory.getExtension(pt, property);
<span class="hljs-keyword">if</span> (object != <span class="hljs-keyword">null</span>) {
@@ -241,8 +241,8 @@ listener=org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper
mock=org.apache.dubbo.rpc.support.MockProtocol
</code></pre>
<p>When Dubbo loads the extension configuration file, there is a piece of code as follows:</p>
-<pre><code class="language-java"><span class="hljs-keyword">try</span> {
- clazz.getConstructor(type);
+<pre><code class="language-java"><span class="hljs-keyword">try</span> {
+ clazz.getConstructor(type);
Set<Class<?>> wrappers = cachedWrapperClasses;
<span class="hljs-keyword">if</span> (wrappers == <span class="hljs-keyword">null</span>) {
cachedWrapperClasses = <span class="hljs-keyword">new</span> ConcurrentHashSet<Class<?>>();
@@ -278,16 +278,16 @@ Let's first look at the code to create an adaptive extension class:</p>
instance = cachedAdaptiveInstance.get();
<span class="hljs-keyword">if</span> (instance == <span class="hljs-keyword">null</span>) {
instance = createAdaptiveExtension();
- cachedAdaptiveInstance.set(instance);
+ cachedAdaptiveInstance.set(instance);
}
- }
+ }
}
<span class="hljs-keyword">return</span> (T) instance;
}
</code></pre>
<p>Continue to read the createAdaptiveExtension method:</p>
-<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">private</span> T <span class="hljs-title">createAdaptiveExtension</span><span class="hljs-params">()</span> </span>{
+<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">private</span> T <span class="hljs-title">createAdaptiveExtension</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> injectExtension((T) getAdaptiveExtensionClass().newInstance());
}
</code></pre>
@@ -386,4 +386,4 @@ In the generated Protocol$Adaptive, both the getDefaultPort and destroy methods
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/introduction-to-dubbo-spi.html b/en-us/blog/introduction-to-dubbo-spi.html
index 1ed7649..d274b27 100644
--- a/en-us/blog/introduction-to-dubbo-spi.html
+++ b/en-us/blog/introduction-to-dubbo-spi.html
@@ -202,4 +202,4 @@ consistenthash=com.alibaba.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalan
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/pinpoint.html b/en-us/blog/pinpoint.html
index 1e52df7..be221c7 100644
--- a/en-us/blog/pinpoint.html
+++ b/en-us/blog/pinpoint.html
@@ -400,4 +400,4 @@ public interface HelloService {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/prepare-an-apache-release.html b/en-us/blog/prepare-an-apache-release.html
index 939010d..a0d2182 100644
--- a/en-us/blog/prepare-an-apache-release.html
+++ b/en-us/blog/prepare-an-apache-release.html
@@ -58,7 +58,7 @@ Please specify how long the key should be valid.
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
-Key is valid for? (0)
+Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
@@ -87,7 +87,7 @@ pub rsa4096 2018-11-12 [SC]
63AAE9838F4A303E40BAF5FEA3A1CA7A5D4A3981 <span class="hljs-comment"># Last 8 character(5D4A3981) as key id,it will be used when send public key to keyserver</span>
uid [ 绝对 ] Victory Cao (CODE SIGNING KEY) <victory@apache.org>
sub rsa4096 2018-11-12 [E]
-
+
<span class="hljs-comment"># send public key to keyserver via key id </span>
$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1
@@ -109,7 +109,7 @@ default-key 28681CB1
$ gpg --yes --delete-secret-keys shenglicao2@gmail.com <span class="hljs-comment">### indicate email address </span>
-$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
+$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
</code></pre>
</li>
@@ -343,8 +343,8 @@ The vote will be open for at least 72 hours or until necessary number of votes a
Please vote accordingly:
-[ ] +1 approve
-[ ] +0 no opinion
+[ ] +1 approve
+[ ] +0 no opinion
[ ] -1 disapprove with the reason
Thanks,
@@ -486,4 +486,4 @@ Apache Dubbo is an effort undergoing incubation at The Apache Software Foundatio
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/prepare-an-apache-release.json b/en-us/blog/prepare-an-apache-release.json
index ec050a0..adb0d68 100644
--- a/en-us/blog/prepare-an-apache-release.json
+++ b/en-us/blog/prepare-an-apache-release.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Apache, Release",
"description": "This article introduces how to the Apache publish content and process"
}
-}
+}
\ No newline at end of file
diff --git a/en-us/blog/qcon-beijing-2018.html b/en-us/blog/qcon-beijing-2018.html
index 6e269aa..5644491 100644
--- a/en-us/blog/qcon-beijing-2018.html
+++ b/en-us/blog/qcon-beijing-2018.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/sentinel-introduction-for-dubbo.html b/en-us/blog/sentinel-introduction-for-dubbo.html
index 0aa357c..19feef3 100644
--- a/en-us/blog/sentinel-introduction-for-dubbo.html
+++ b/en-us/blog/sentinel-introduction-for-dubbo.html
@@ -94,4 +94,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/spring-boot-dubbo-start-stop-analysis.html b/en-us/blog/spring-boot-dubbo-start-stop-analysis.html
index c2cde7f..2049f8e 100644
--- a/en-us/blog/spring-boot-dubbo-start-stop-analysis.html
+++ b/en-us/blog/spring-boot-dubbo-start-stop-analysis.html
@@ -214,4 +214,4 @@ run:<span class="hljs-number">929</span>, AbstractApplicationContext$<span class
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/spring-boot-dubbo-start-stop-analysis.json b/en-us/blog/spring-boot-dubbo-start-stop-analysis.json
index 26c0bae..60e0cc8 100644
--- a/en-us/blog/spring-boot-dubbo-start-stop-analysis.json
+++ b/en-us/blog/spring-boot-dubbo-start-stop-analysis.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Spring Boot, source code analysis",
"description": "This article introduces the implementation details of app start and stop in `dubbo-spring-boot-project`."
}
-}
+}
\ No newline at end of file
diff --git a/en-us/blog/tracing-with-skywalking.html b/en-us/blog/tracing-with-skywalking.html
index 01b2038..c028770 100644
--- a/en-us/blog/tracing-with-skywalking.html
+++ b/en-us/blog/tracing-with-skywalking.html
@@ -86,7 +86,7 @@ public String sayHello(@PathVariable(name = "name") String name) {
<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-provider -Dskywalking.collector.servers=localhost:10800 dubbo-provider/target/dubbo-provider.jar
</code></pre>
<h4>Deploy the consumer service</h4>
-<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
+<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
</code></pre>
<h4>visit demo service</h4>
<pre><code>curl http://localhost:8080/sayHello/test
@@ -128,4 +128,4 @@ public String sayHello(@PathVariable(name = "name") String name) {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/tracing-with-skywalking.json b/en-us/blog/tracing-with-skywalking.json
index fa0e7c9..71388a7 100644
--- a/en-us/blog/tracing-with-skywalking.json
+++ b/en-us/blog/tracing-with-skywalking.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Skywalking, tracing, distribute tracking",
"description": "This article introduces how to use Apache Skywalking to track Dubbo applications."
}
-}
+}
\ No newline at end of file
diff --git a/en-us/community/index.html b/en-us/community/index.html
index 7eae499..9a5de1b 100644
--- a/en-us/community/index.html
+++ b/en-us/community/index.html
@@ -29,4 +29,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/README.html b/en-us/docs/admin/README.html
index 09ac379..2127d80 100644
--- a/en-us/docs/admin/README.html
+++ b/en-us/docs/admin/README.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/SUMMARY.html b/en-us/docs/admin/SUMMARY.html
index bb8faae..08e1c8d 100644
--- a/en-us/docs/admin/SUMMARY.html
+++ b/en-us/docs/admin/SUMMARY.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/admin-console.html b/en-us/docs/admin/install/admin-console.html
index 9a903aa..6849691 100644
--- a/en-us/docs/admin/install/admin-console.html
+++ b/en-us/docs/admin/install/admin-console.html
@@ -58,4 +58,4 @@ dubbo.registry.address=zookeeper://127.0.0.1:2181
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/admin-console.json b/en-us/docs/admin/install/admin-console.json
index 2cd9eb2..9a0b9e5 100644
--- a/en-us/docs/admin/install/admin-console.json
+++ b/en-us/docs/admin/install/admin-console.json
@@ -3,4 +3,4 @@
"__html": "<h1>Install admin console</h1>\n<p>The current version of dubbo admin is under development, including: route rule, dynamic configuration, access control, weight adjustment, load balance, etc.</p>\n<p>Install:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo-admin.git /var/tmp/dubbo-admin\n<span class=\"hljs-built_in\">cd</span> /var/tmp/dubbo-admin\nmvn clean package\n</code></pre>\n<p>Configuration <sup cla [...]
"link": "/en-us/docs/admin/install/admin-console.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/admin/install/consumer-demo.html b/en-us/docs/admin/install/consumer-demo.html
index 4b39c75..63ce4c2 100644
--- a/en-us/docs/admin/install/consumer-demo.html
+++ b/en-us/docs/admin/install/consumer-demo.html
@@ -40,4 +40,4 @@ change dubbo:registry to the real registry center address
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/consumer-demo.json b/en-us/docs/admin/install/consumer-demo.json
index 71ea9ae..90eebcb 100644
--- a/en-us/docs/admin/install/consumer-demo.json
+++ b/en-us/docs/admin/install/consumer-demo.json
@@ -3,4 +3,4 @@
"__html": "<h1>install demo consumer</h1>\n<p>install:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo.git\n<span class=\"hljs-built_in\">cd</span> dubbo\nPlease start Provider first\nadd -Djava.net.preferIPv4Stack=<span class=\"hljs-literal\">true</span> <span class=\"hljs-keyword\">if</span> your IDE is Intellij Idea\n</code></pre>\n<p>configuration:</p>\n<pre><code class=\"language-sh\">resource/META-INFO.spring/du [...]
"link": "/en-us/docs/admin/install/consumer-demo.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/admin/install/introduction.html b/en-us/docs/admin/install/introduction.html
index 9b5169d..41cd535 100644
--- a/en-us/docs/admin/install/introduction.html
+++ b/en-us/docs/admin/install/introduction.html
@@ -35,4 +35,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/provider-demo.html b/en-us/docs/admin/install/provider-demo.html
index 593d991..a406b38 100644
--- a/en-us/docs/admin/install/provider-demo.html
+++ b/en-us/docs/admin/install/provider-demo.html
@@ -40,4 +40,4 @@ change dubbo:registry to a real registry server address, zookeeper is recommande
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/provider-demo.json b/en-us/docs/admin/install/provider-demo.json
index 8bf4d4c..64105fd 100644
--- a/en-us/docs/admin/install/provider-demo.json
+++ b/en-us/docs/admin/install/provider-demo.json
@@ -3,4 +3,4 @@
"__html": "<h1>install demo provider</h1>\n<p>install:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo.git\n<span class=\"hljs-built_in\">cd</span> dubbo\nrun org.apache.dubbo.demo.provider.Provider under dubbo-demo-provider module\nadd -Djava.net.preferIPv4Stack=<span class=\"hljs-literal\">true</span> <span class=\"hljs-keyword\">if</span> your IDE is Intellij Idea\n</code></pre>\n<p>configuration:</p>\n<pre><code c [...]
"link": "/en-us/docs/admin/install/provider-demo.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/admin/install/redis.html b/en-us/docs/admin/install/redis.html
index fe5b39d..624e05a 100644
--- a/en-us/docs/admin/install/redis.html
+++ b/en-us/docs/admin/install/redis.html
@@ -69,4 +69,4 @@ hgetall /dubbo/com.foo.BarService/providers
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/simple-monitor-center.html b/en-us/docs/admin/install/simple-monitor-center.html
index 607494e..a243281 100644
--- a/en-us/docs/admin/install/simple-monitor-center.html
+++ b/en-us/docs/admin/install/simple-monitor-center.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/simple-registry-center.html b/en-us/docs/admin/install/simple-registry-center.html
index c47cef4..0c9ca4f 100644
--- a/en-us/docs/admin/install/simple-registry-center.html
+++ b/en-us/docs/admin/install/simple-registry-center.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/install/zookeeper.html b/en-us/docs/admin/install/zookeeper.html
index cdf6aa7..cd93077 100644
--- a/en-us/docs/admin/install/zookeeper.html
+++ b/en-us/docs/admin/install/zookeeper.html
@@ -98,4 +98,4 @@ dump
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/introduction.html b/en-us/docs/admin/introduction.html
index 5578f9f..41abb0e 100644
--- a/en-us/docs/admin/introduction.html
+++ b/en-us/docs/admin/introduction.html
@@ -32,15 +32,15 @@ java -jar dubbo-admin-0.1.jar
<ul>
<li>frontend deploy</li>
</ul>
-<pre><code class="language-sh"><span class="hljs-built_in">cd</span> dubbo-admin-ui
-npm run install
-npm run dev
+<pre><code class="language-sh"><span class="hljs-built_in">cd</span> dubbo-admin-ui
+npm run install
+npm run dev
</code></pre>
<ul>
<li>backend deploy</li>
</ul>
<pre><code class="language-sh"><span class="hljs-built_in">cd</span> dubbo-admin-server
-mvn clean package
+mvn clean package
<span class="hljs-built_in">cd</span> target
java -jar dubbo-admin-server-0.1.jar
</code></pre>
@@ -92,4 +92,4 @@ Same as Dubbo 2.7, you can set the addresses of metadata center and registry cen
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/introduction.json b/en-us/docs/admin/introduction.json
index fa7699e..ec39b06 100644
--- a/en-us/docs/admin/introduction.json
+++ b/en-us/docs/admin/introduction.json
@@ -3,4 +3,4 @@
"__html": "<h1>Dubbo Admin introduction</h1>\n<p>Now version 0.1 has been released, frontend uses Vue and Vuetify as javascript framework and UI framework, backend uses spring framework, you can deploy the whole project with maven or deploy frontend and backend separately.</p>\n<h3>Deploy the whole project through maven</h3>\n<ul>\n<li>install</li>\n</ul>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo-admin.git\n<span cl [...]
"link": "/en-us/docs/admin/introduction.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/admin/ops/dubbo-ops.html b/en-us/docs/admin/ops/dubbo-ops.html
index f2a06e7..7f33e0c 100644
--- a/en-us/docs/admin/ops/dubbo-ops.html
+++ b/en-us/docs/admin/ops/dubbo-ops.html
@@ -41,4 +41,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/ops/introduction.html b/en-us/docs/admin/ops/introduction.html
index 355564d..a8f73b4 100644
--- a/en-us/docs/admin/ops/introduction.html
+++ b/en-us/docs/admin/ops/introduction.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/ops/pinpoint.html b/en-us/docs/admin/ops/pinpoint.html
index 2e2d4d2..74b71fc 100644
--- a/en-us/docs/admin/ops/pinpoint.html
+++ b/en-us/docs/admin/ops/pinpoint.html
@@ -400,4 +400,4 @@ public interface HelloService {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/ops/skywalking.html b/en-us/docs/admin/ops/skywalking.html
index cffffc5..3252aa0 100644
--- a/en-us/docs/admin/ops/skywalking.html
+++ b/en-us/docs/admin/ops/skywalking.html
@@ -86,7 +86,7 @@ public String sayHello(@PathVariable(name = "name") String name) {
<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-provider -Dskywalking.collector.servers=localhost:10800 dubbo-provider/target/dubbo-provider.jar
</code></pre>
<h4>Deploy the consumer service</h4>
-<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
+<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
</code></pre>
<h4>visit demo service</h4>
<pre><code>curl http://localhost:8080/sayHello/test
@@ -128,4 +128,4 @@ public String sayHello(@PathVariable(name = "name") String name) {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/ops/skywalking.json b/en-us/docs/admin/ops/skywalking.json
index aa17ff5..c5b4b56 100644
--- a/en-us/docs/admin/ops/skywalking.json
+++ b/en-us/docs/admin/ops/skywalking.json
@@ -3,4 +3,4 @@
"__html": "<h1>Tracing Dubbo service with Apache Skywalking(incubator)</h1>\n<h2>Introduction to Apache Skywalking(Incubator)</h2>\n<p><a href=\"https://github.com/apache/incubator-skywalking\">Apache Skywalking(Incubator)</a> is the APM system that it designed for micro-services architectures and cloud native architecture systems and supports distribute tracking. <a href=\"https://github.com/apache/incubator-skywalking\">Apache skywalking (incubator)</a> collects and analyzes the tra [...]
"link": "/en-us/docs/admin/ops/skywalking.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/admin/serviceGovernance.html b/en-us/docs/admin/serviceGovernance.html
index e6ffb1e..10b948d 100644
--- a/en-us/docs/admin/serviceGovernance.html
+++ b/en-us/docs/admin/serviceGovernance.html
@@ -69,4 +69,4 @@ application configuration can also set service configuration in this application
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/serviceSearch.html b/en-us/docs/admin/serviceSearch.html
index 899aac6..815fd3a 100644
--- a/en-us/docs/admin/serviceSearch.html
+++ b/en-us/docs/admin/serviceSearch.html
@@ -34,4 +34,4 @@ the service detail page display providers, consumers, medata information is supp
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/admin/serviceTest.html b/en-us/docs/admin/serviceTest.html
index beeec8f..2479a86 100644
--- a/en-us/docs/admin/serviceTest.html
+++ b/en-us/docs/admin/serviceTest.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/README.html b/en-us/docs/dev/README.html
index 0d7ce8f..860bf54 100644
--- a/en-us/docs/dev/README.html
+++ b/en-us/docs/dev/README.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/SPI.html b/en-us/docs/dev/SPI.html
index eac710b..0797481 100644
--- a/en-us/docs/dev/SPI.html
+++ b/en-us/docs/dev/SPI.html
@@ -30,10 +30,10 @@
</code></pre>
<p>content of the implementation <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.alibaba.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Protocol;
-
-<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocol</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
+
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocol</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
<span class="hljs-comment">// ...</span>
}
</code></pre>
@@ -46,21 +46,21 @@
<p>Auto wrap the SPI's Wrapper class. <code>ExtensionLoader</code> loads the SPI implementation, if the SPI has a copy instructor, it will be regarded as the SPI's Wrapper class.</p>
<p>Wrapper class content:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.alibaba.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Protocol;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocolWrapper</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
Protocol impl;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxProtocolWrapper</span><span class="hljs-params">(Protocol protocol)</span> </span>{ impl = protocol; }
-
+
<span class="hljs-comment">//after interface method is executed, the method in extension will be executed</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">refer</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">//... some operation</span>
impl.refer();
<span class="hljs-comment">// ... some operation</span>
}
-
+
<span class="hljs-comment">// ...</span>
}
</code></pre>
@@ -74,7 +74,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">CarMaker</span> </span>{
<span class="hljs-function">Car <span class="hljs-title">makeCar</span><span class="hljs-params">()</span></span>;
}
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">WheelMaker</span> </span>{
<span class="hljs-function">Wheel <span class="hljs-title">makeWheel</span><span class="hljs-params">()</span></span>;
}
@@ -82,11 +82,11 @@
<p><code>CarMaker</code>'s implementation:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RaceCarMaker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">CarMaker</span> </span>{
WheelMaker wheelMaker;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">setWheelMaker</span><span class="hljs-params">(WheelMaker wheelMaker)</span> </span>{
<span class="hljs-keyword">this</span>.wheelMaker = wheelMaker;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Car <span class="hljs-title">makeCar</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
Wheel wheel = wheelMaker.makeWheel();
@@ -108,7 +108,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">CarMaker</span> </span>{
<span class="hljs-function">Car <span class="hljs-title">makeCar</span><span class="hljs-params">(URL url)</span></span>;
}
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">WheelMaker</span> </span>{
<span class="hljs-function">Wheel <span class="hljs-title">makeWheel</span><span class="hljs-params">(URL url)</span></span>;
}
@@ -116,11 +116,11 @@
<p><code>CarMaker</code>'s implementation:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RaceCarMaker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">CarMaker</span> </span>{
WheelMaker wheelMaker;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">setWheelMaker</span><span class="hljs-params">(WheelMaker wheelMaker)</span> </span>{
<span class="hljs-keyword">this</span>.wheelMaker = wheelMaker;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Car <span class="hljs-title">makeCar</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
Wheel wheel = wheelMaker.makeWheel(url);
@@ -140,7 +140,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">Transporter</span> </span>{
<span class="hljs-meta">@Adaptive</span>({<span class="hljs-string">"server"</span>, <span class="hljs-string">"transport"</span>})
<span class="hljs-function">Server <span class="hljs-title">bind</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>;
-
+
<span class="hljs-meta">@Adaptive</span>({<span class="hljs-string">"client"</span>, <span class="hljs-string">"transport"</span>})
<span class="hljs-function">Client <span class="hljs-title">connect</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>;
}
@@ -150,7 +150,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<p>As for Collections SPI, such as: <code>Filter</code>, <code>InvokerListener</code>, <code>ExportListener</code>, <code>TelnetHandler</code>, <code>StatusChecker</code> etc, multi implementations can be loaded at one time. User can simplify configuration by using auto activation, Like:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.Activate;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
-
+
<span class="hljs-meta">@Activate</span> <span class="hljs-comment">// Active for any condition</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -159,7 +159,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<p>Or:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.Activate;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
-
+
<span class="hljs-meta">@Activate</span>(<span class="hljs-string">"xxx"</span>) <span class="hljs-comment">// when configed xxx parameter and the parameter has a valid value,the SPI is activated, for example configed cache="lru", auto acitivate CacheFilter.</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -168,7 +168,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<p>Or:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.Activate;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
-
+
<span class="hljs-meta">@Activate</span>(group = <span class="hljs-string">"provider"</span>, value = <span class="hljs-string">"xxx"</span>) <span class="hljs-comment">// only activate for provider, group can be "provider" or "consumer"</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -200,4 +200,4 @@ Wheel wheel = wheelMaker.makeWheel(url);
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/SUMMARY.html b/en-us/docs/dev/SUMMARY.html
index a451e71..c849c44 100644
--- a/en-us/docs/dev/SUMMARY.html
+++ b/en-us/docs/dev/SUMMARY.html
@@ -73,4 +73,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/TCK.html b/en-us/docs/dev/TCK.html
index 8d4a64b..a597193 100644
--- a/en-us/docs/dev/TCK.html
+++ b/en-us/docs/dev/TCK.html
@@ -43,4 +43,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/build.html b/en-us/docs/dev/build.html
index 728a581..2fcf3fd 100644
--- a/en-us/docs/dev/build.html
+++ b/en-us/docs/dev/build.html
@@ -71,4 +71,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/build.json b/en-us/docs/dev/build.json
index abd808b..7acbfc8 100644
--- a/en-us/docs/dev/build.json
+++ b/en-us/docs/dev/build.json
@@ -3,4 +3,4 @@
"__html": "<h1>Source Code Build</h1>\n<h2>Checkout</h2>\n<p>checkout the lastest project source code with commands blow:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo.git dubbo\n</code></pre>\n<h2>Branches</h2>\n<p>We use <code>master</code> as the major branch for new feature development, and use other branches for maintenance. Tags for all versions can be checked via <a href=\"https://github.com/apache/dubbo/tags [...]
"link": "/en-us/docs/dev/build.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/dev/checklist.html b/en-us/docs/dev/checklist.html
index 4bedb20..c441908 100644
--- a/en-us/docs/dev/checklist.html
+++ b/en-us/docs/dev/checklist.html
@@ -48,4 +48,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/code-smell.html b/en-us/docs/dev/code-smell.html
index ba34d7d..e1ee718 100644
--- a/en-us/docs/dev/code-smell.html
+++ b/en-us/docs/dev/code-smell.html
@@ -88,23 +88,23 @@ GETROUTE(script://path/file.js?type=js&rule=ENCODE(function{...}))
<p>For the rules above,ExtensionLoader will create a adaptive instance for each SPI injected.</p>
<p>ExtensionLoader generated adaptive classes look like :</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> <<span class="hljs-keyword">package</span> name <span class="hljs-keyword">for</span> SPI <span class="hljs-class"><span class="hljs-keyword">interface</span>></span>;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <<span class="hljs-title">SPI</span> <span class="hljs-title">interface</span> <span class="hljs-title">name</span>>$<span class="hljs-title">Adpative</span> <span class="hljs-keyword">implements</span> <<span class="hljs-title">SPI</span> <span class="hljs-title">interface</span>> </span>{
<span class="hljs-keyword">public</span> <contains <span class="hljs-meta">@Adaptive</span> annotation method>(<parameters>) {
<span class="hljs-keyword">if</span>(parameters containing URL Type?) <span class="hljs-function">using URL parameter
<span class="hljs-keyword">else</span> <span class="hljs-title">if</span><span class="hljs-params">(method returns URL)</span> using the return URL
# <<span class="hljs-keyword">else</span> throw exception,inject SPI fail!>
-
+
<span class="hljs-title">if</span><span class="hljs-params">(URL accquired == <span class="hljs-keyword">null</span>)</span> </span>{
<span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalArgumentException(<span class="hljs-string">"url == null"</span>);
}
-
+
According to the Key order from <span class="hljs-meta">@Adaptive</span> annotation,get the Value from the URL as the real SPI name
<span class="hljs-keyword">if</span> no value is found then use the <span class="hljs-keyword">default</span> SPI implementation。If no SPI point, <span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalStateException(<span class="hljs-string">"Fail to get extension"</span>);
-
+
Invoke the method using the spi and <span class="hljs-keyword">return</span> the result.
}
-
+
<span class="hljs-keyword">public</span> <method having annotation <span class="hljs-meta">@Adaptive</span>>(<parameters>) {
<span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> UnsupportedOperationException(<span class="hljs-string">"is not adaptive method!"</span>);
}
@@ -157,4 +157,4 @@ GETROUTE(script://path/file.js?type=js&rule=ENCODE(function{...}))
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/coding.html b/en-us/docs/dev/coding.html
index ebc1af4..cadd620 100644
--- a/en-us/docs/dev/coding.html
+++ b/en-us/docs/dev/coding.html
@@ -88,4 +88,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/contract.html b/en-us/docs/dev/contract.html
index ff7a399..c57703c 100644
--- a/en-us/docs/dev/contract.html
+++ b/en-us/docs/dev/contract.html
@@ -42,4 +42,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/contribution.html b/en-us/docs/dev/contribution.html
index 707dc46..2146a04 100644
--- a/en-us/docs/dev/contribution.html
+++ b/en-us/docs/dev/contribution.html
@@ -392,4 +392,4 @@ table tr:hover {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/design.html b/en-us/docs/dev/design.html
index cd3c7bf..1e7c96f 100644
--- a/en-us/docs/dev/design.html
+++ b/en-us/docs/dev/design.html
@@ -111,4 +111,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/implementation.html b/en-us/docs/dev/implementation.html
index 111d656..bbd0d55 100644
--- a/en-us/docs/dev/implementation.html
+++ b/en-us/docs/dev/implementation.html
@@ -65,13 +65,13 @@
<p>To better explain the above image, we provide the below code examples of service consumption and providers:</p>
<p>Service consumer code:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DemoClientAction</span> </span>{
-
+
<span class="hljs-keyword">private</span> DemoService demoService;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setDemoService</span><span class="hljs-params">(DemoService demoService)</span> </span>{
<span class="hljs-keyword">this</span>.demoService = demoService;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">start</span><span class="hljs-params">()</span> </span>{
String hello = demoService.sayHello(<span class="hljs-string">"world"</span> + i);
}
@@ -80,7 +80,7 @@
<p>The <code>DemoService</code> in above code is the proxy of service consumer in above image, user can call <code>Invoker</code> <sup class="footnote-ref"><a href="#fn5" id="fnref5">[5]</a></sup> which implementate the real RPC by the proxy.</p>
<p>Service provider code:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DemoServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">DemoService</span> </span>{
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">sayHello</span><span class="hljs-params">(String name)</span> <span class="hljs-keyword">throws</span> RemoteException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-string">"Hello "</span> + name;
}
@@ -128,4 +128,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/cache.html b/en-us/docs/dev/impls/cache.html
index 11f04da..1d9d91f 100644
--- a/en-us/docs/dev/impls/cache.html
+++ b/en-us/docs/dev/impls/cache.html
@@ -20,10 +20,10 @@
<h2>Extension Configuration</h2>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"lru"</span> /></span>
<span class="hljs-comment"><!-- method level cache --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span>></span><span class="hljs-tag"><<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"lru"</span> /></span><span class="hljs-tag"></<span class="hljs-name">dubbo:service</span>></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span>></span><span class="hljs-tag"><<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"lru"</span> /></span><span class="hljs-tag"></<span class="hljs-name">dubbo:service</span>></span>
<span class="hljs-comment"><!-- 缺省值设置,当<dubbo:service>没有配置cache属性时,使用此配置 --></span>
<span class="hljs-comment"><!-- default configuration, will take affect if cache attribute isn't configured in <dubbo:service> --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
</code></pre>
<h2>Existing Extensions</h2>
<ul>
@@ -46,9 +46,9 @@
</code></pre>
<p>XxxCacheFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.cache.CacheFactory;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCacheFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">CacheFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Cache <span class="hljs-title">getCache</span><span class="hljs-params">(URL url, String name)</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxCache(url, name);
@@ -57,9 +57,9 @@
</code></pre>
<p>XxxCacheFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.cache.Cache;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCache</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Cache</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Cache</span><span class="hljs-params">(URL url, String name)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -92,4 +92,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/cluster.html b/en-us/docs/dev/impls/cluster.html
index 389f81d..da1f6ce 100644
--- a/en-us/docs/dev/impls/cluster.html
+++ b/en-us/docs/dev/impls/cluster.html
@@ -46,7 +46,7 @@
</code></pre>
<p>XxxCluster.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Cluster;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Directory;
@@ -55,7 +55,7 @@
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Result;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCluster</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Cluster</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">Invoker<T> <span class="hljs-title">merge</span><span class="hljs-params">(Directory<T> directory)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> AbstractClusterInvoker<T>(directory) {
@@ -86,4 +86,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/compiler.html b/en-us/docs/dev/impls/compiler.html
index 4a458fa..26a1d1c 100644
--- a/en-us/docs/dev/impls/compiler.html
+++ b/en-us/docs/dev/impls/compiler.html
@@ -39,9 +39,9 @@
</code></pre>
<p>XxxCompiler.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.compiler.Compiler;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCompiler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Compiler</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Object <span class="hljs-title">getExtension</span><span class="hljs-params">(Class<?> type, String name)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -68,4 +68,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/container.html b/en-us/docs/dev/impls/container.html
index eb641f2..ff3eb23 100644
--- a/en-us/docs/dev/impls/container.html
+++ b/en-us/docs/dev/impls/container.html
@@ -41,10 +41,10 @@
</code></pre>
<p>XxxContainer.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
org.apache.dubbo.container.Container;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxContainer</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Container</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Status <span class="hljs-title">start</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -74,4 +74,4 @@ org.apache.dubbo.container.Container;
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/dispatcher.html b/en-us/docs/dev/impls/dispatcher.html
index 4a914a9..102b0b2 100644
--- a/en-us/docs/dev/impls/dispatcher.html
+++ b/en-us/docs/dev/impls/dispatcher.html
@@ -45,9 +45,9 @@
</code></pre>
<p>XxxDispatcher.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.Dispatcher;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxDispatcher</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Dispatcher</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Group <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -74,4 +74,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/exchanger.html b/en-us/docs/dev/impls/exchanger.html
index 11bd655..54ce810 100644
--- a/en-us/docs/dev/impls/exchanger.html
+++ b/en-us/docs/dev/impls/exchanger.html
@@ -45,10 +45,10 @@
</code></pre>
<p>XxxExchanger.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.exchange.Exchanger;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExchanger</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Exchanger</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> ExchangeServer <span class="hljs-title">bind</span><span class="hljs-params">(URL url, ExchangeHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxExchangeServer(url, handler);
@@ -61,18 +61,18 @@
<p>XxxExchangeServer.java:</p>
<pre><code class="language-java">
<span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.exchange.ExchangeServer;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExchangeServer</span> <span class="hljs-title">impelements</span> <span class="hljs-title">ExchangeServer</span> </span>{
<span class="hljs-comment">// ...</span>
}
</code></pre>
<p>XxxExchangeClient.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.exchange.ExchangeClient;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExchangeClient</span> <span class="hljs-title">impelments</span> <span class="hljs-title">ExchangeClient</span> </span>{
<span class="hljs-comment">// ...</span>
}
@@ -97,4 +97,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/exporter-listener.html b/en-us/docs/dev/impls/exporter-listener.html
index 836cb1f..12e0aa7 100644
--- a/en-us/docs/dev/impls/exporter-listener.html
+++ b/en-us/docs/dev/impls/exporter-listener.html
@@ -40,12 +40,12 @@
</code></pre>
<p>XxxExporterListener.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.ExporterListener;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Exporter;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExporterListener</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ExporterListener</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">exported</span><span class="hljs-params">(Exporter<?> exporter)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/extension-factory.html b/en-us/docs/dev/impls/extension-factory.html
index 47e1fee..b6d8142 100644
--- a/en-us/docs/dev/impls/extension-factory.html
+++ b/en-us/docs/dev/impls/extension-factory.html
@@ -40,9 +40,9 @@
</code></pre>
<p>XxxExtensionFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.ExtensionFactory;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExtensionFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ExtensionFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Object <span class="hljs-title">getExtension</span><span class="hljs-params">(Class<?> type, String name)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -69,4 +69,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/filter.html b/en-us/docs/dev/impls/filter.html
index ed00e60..f9edba1 100644
--- a/en-us/docs/dev/impls/filter.html
+++ b/en-us/docs/dev/impls/filter.html
@@ -65,13 +65,13 @@
</code></pre>
<p>XxxFilter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Result;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invoker<?> invoker, Invocation invocation)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// before filter ...</span>
@@ -101,4 +101,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/introduction.html b/en-us/docs/dev/impls/introduction.html
index ff89c41..6e3c0cc 100644
--- a/en-us/docs/dev/impls/introduction.html
+++ b/en-us/docs/dev/impls/introduction.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/invoker-listener.html b/en-us/docs/dev/impls/invoker-listener.html
index 4564014..9ce4d54 100644
--- a/en-us/docs/dev/impls/invoker-listener.html
+++ b/en-us/docs/dev/impls/invoker-listener.html
@@ -20,9 +20,9 @@
<h2>Extension Configuration</h2>
<pre><code class="language-xml"><span class="hljs-comment"><!-- 引用服务监听 --></span>
<span class="hljs-comment"><!-- service reference listener --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
<span class="hljs-comment"><!-- default service reference listener --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:consumer</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:consumer</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
</code></pre>
<h2>Existing Extension</h2>
<p><code>org.apache.dubbo.rpc.listener.DeprecatedInvokerListener</code></p>
@@ -41,11 +41,11 @@
</code></pre>
<p>XxxInvokerListener.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.InvokerListener;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxInvokerListener</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">InvokerListener</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">referred</span><span class="hljs-params">(Invoker<?> invoker)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/load-balance.html b/en-us/docs/dev/impls/load-balance.html
index 6c30db3..308e6b5 100644
--- a/en-us/docs/dev/impls/load-balance.html
+++ b/en-us/docs/dev/impls/load-balance.html
@@ -43,12 +43,12 @@
</code></pre>
<p>XxxLoadBalance.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.LoadBalance;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
-<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxLoadBalance</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">LoadBalance</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">Invoker<T> <span class="hljs-title">select</span><span class="hljs-params">(List<Invoker<T>> invokers, Invocation invocation)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/logger-adapter.html b/en-us/docs/dev/impls/logger-adapter.html
index 80673b5..26c5e45 100644
--- a/en-us/docs/dev/impls/logger-adapter.html
+++ b/en-us/docs/dev/impls/logger-adapter.html
@@ -46,9 +46,9 @@
</code></pre>
<p>XxxLoggerAdapter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.logger.LoggerAdapter;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxLoggerAdapter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">LoggerAdapter</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Logger <span class="hljs-title">getLogger</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -57,9 +57,9 @@
</code></pre>
<p>XxxLogger.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.logger.Logger;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxLogger</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Logger</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxLogger</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -90,4 +90,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/merger.html b/en-us/docs/dev/impls/merger.html
index a768376..812343e 100644
--- a/en-us/docs/dev/impls/merger.html
+++ b/en-us/docs/dev/impls/merger.html
@@ -42,9 +42,9 @@
</code></pre>
<p>XxxMerger.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Merger;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxMerger</span><<span class="hljs-title">T</span>> <span class="hljs-keyword">implements</span> <span class="hljs-title">Merger</span><<span class="hljs-title">T</span>> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> T <span class="hljs-title">merge</span><span class="hljs-params">(T... results)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -71,4 +71,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/monitor.html b/en-us/docs/dev/impls/monitor.html
index 4b3d965..9760760 100644
--- a/en-us/docs/dev/impls/monitor.html
+++ b/en-us/docs/dev/impls/monitor.html
@@ -42,11 +42,11 @@
</code></pre>
<p>XxxMonitorFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.monitor.MonitorFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.monitor.Monitor;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.URL;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxMonitorFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">MonitorFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Monitor <span class="hljs-title">getMonitor</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxMonitor(url);
@@ -55,9 +55,9 @@
</code></pre>
<p>XxxMonitor.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.monitor.Monitor;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxMonitor</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Monitor</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">count</span><span class="hljs-params">(URL statistics)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -84,4 +84,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/networker.html b/en-us/docs/dev/impls/networker.html
index 3f64350..0ef02a6 100644
--- a/en-us/docs/dev/impls/networker.html
+++ b/en-us/docs/dev/impls/networker.html
@@ -20,7 +20,7 @@
<h2>Extension Configuration</h2>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">networker</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- default configuration, it takes effect if networker attribute is not set in <dubbo:protocol> --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">networker</span>=<span class="hljs-string">"xxx"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">networker</span>=<span class="hljs-string">"xxx"</span> /></span>
</code></pre>
<h2>Existing Extension</h2>
<ul>
@@ -42,9 +42,9 @@
</code></pre>
<p>XxxNetworker.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.p2p.Networker;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxNetworker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Networker</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Group <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -71,4 +71,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/page.html b/en-us/docs/dev/impls/page.html
index 895af5b..f9ea0c6 100644
--- a/en-us/docs/dev/impls/page.html
+++ b/en-us/docs/dev/impls/page.html
@@ -44,9 +44,9 @@
</code></pre>
<p>XxxPageHandler.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.container.page.PageHandler;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxPageHandler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">PageHandler</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Group <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -73,4 +73,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/protocol.html b/en-us/docs/dev/impls/protocol.html
index 87d62b4..2b1226d 100644
--- a/en-us/docs/dev/impls/protocol.html
+++ b/en-us/docs/dev/impls/protocol.html
@@ -37,20 +37,20 @@
* 1. Should save address info for the request when the protocol receives it: RpcContext.getContext().setRemoteAddress();<br>
* 2. export() must be implemented as idempotent, that is, it should not introduce side effect when the implementation gets called with the same Invoker for more than once.
* 3. Invoker is passed by the framework, and the protocol should not care about it. <br>
- *
+ *
* <span class="hljs-doctag">@param</span> <T> Service type
* <span class="hljs-doctag">@param</span> invoker Service invoker
* <span class="hljs-doctag">@return</span> exporter The reference of service exporter, used for cancelling service export.
* <span class="hljs-doctag">@throws</span> RpcException throw when there's any error during service export, e.g. the port is occupied
*/</span>
<T> <span class="hljs-function">Exporter<T> <span class="hljs-title">export</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RpcException</span>;
-
+
<span class="hljs-comment">/**
* Reference remote service: <br>
* 1. When user calls `invoke()` method of `Invoker` object which's returned from `refer()` call, the protocol needs to correspondingly execute `invoke()` method of `Invoker` object passed from remote `export()` method associated with the same URL. <br>
* 2. It's protocol's responsibility to implement `Invoker` which's returned from `refer()`. Generally speaking, protocol sends remote request in the `Invoker` implementation. <br>
* 3. When there's check=false set in URL, the implementation must not throw exception but try to recover when connection fails.
- *
+ *
* <span class="hljs-doctag">@param</span> <T> Service type
* <span class="hljs-doctag">@param</span> type Service type
* <span class="hljs-doctag">@param</span> url URL address for the remote service
@@ -58,7 +58,7 @@
* <span class="hljs-doctag">@throws</span> RpcException throw when there's any error while connecting to the service provider
*/</span>
<T> <span class="hljs-function">Invoker<T> <span class="hljs-title">refer</span><span class="hljs-params">(Class<T> type, URL url)</span> <span class="hljs-keyword">throws</span> RpcException</span>;
-
+
}
</code></pre>
<h2>Extension Configuration</h2>
@@ -66,7 +66,7 @@
<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"xxx1"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- reference protocol, if protocol's attribute is not set, then protocol configuration will be scanned automatically from ApplicationContext --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"xxx1"</span> /></span>
-<span class="hljs-comment"><!-- default value for referenced protocol, it will be used if protocol attribute is not configured in <dubbo:service> --></span>
+<span class="hljs-comment"><!-- default value for referenced protocol, it will be used if protocol attribute is not configured in <dubbo:service> --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"xxx1"</span> /></span>
</code></pre>
<h2>Existing Protocol</h2>
@@ -94,9 +94,9 @@
</code></pre>
<p>XxxProtocol.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Protocol;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocol</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">Exporter<T> <span class="hljs-title">export</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxExporter(invoker);
@@ -108,9 +108,9 @@
</code></pre>
<p>XxxExporter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.support.AbstractExporter;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExporter</span><<span class="hljs-title">T</span>> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractExporter</span><<span class="hljs-title">T</span>> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxExporter</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(invoker);
@@ -124,9 +124,9 @@
</code></pre>
<p>XxxInvoker.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.support.AbstractInvoker;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxInvoker</span><<span class="hljs-title">T</span>> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractInvoker</span><<span class="hljs-title">T</span>> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxInvoker</span><span class="hljs-params">(Class<T> type, URL url)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(type, url);
@@ -156,4 +156,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/proxy-factory.html b/en-us/docs/dev/impls/proxy-factory.html
index 7ceca48..44f128b 100644
--- a/en-us/docs/dev/impls/proxy-factory.html
+++ b/en-us/docs/dev/impls/proxy-factory.html
@@ -42,12 +42,12 @@
</code></pre>
<p>XxxProxyFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.ProxyFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProxyFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ProxyFactory</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">T <span class="hljs-title">getProxy</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -77,4 +77,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/registry.html b/en-us/docs/dev/impls/registry.html
index aca4b3c..8a40b71 100644
--- a/en-us/docs/dev/impls/registry.html
+++ b/en-us/docs/dev/impls/registry.html
@@ -33,7 +33,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">RegistryFactory</span> </span>{
<span class="hljs-comment">/**
* Connect to registry server
- *
+ *
* The contract for connecting to registry server: <br>
* 1. Will not check connection when check=false is set, otherwise exception will be thrown if connection fails. <br>
* 2. Support authorizing against username:password in the URL <br>
@@ -41,44 +41,44 @@
* 4. Support cache on local disk with file=registry.cache <br>
* 5. Support timeout setup with timeout=1000 <br>
* 6. Support session expiration setup with session=60000 <br>
- *
+ *
* <span class="hljs-doctag">@param</span> url registry server address, null is not allowed
* <span class="hljs-doctag">@return</span> reference to registry server, never return null
*/</span>
- <span class="hljs-function">Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span></span>;
+ <span class="hljs-function">Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span></span>;
}
</code></pre>
<p>RegistryService.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">RegistryService</span> </span>{ <span class="hljs-comment">// Registry extends RegistryService </span>
<span class="hljs-comment">/**
* Register service.
- *
+ *
* Contract for registering service: <br>
* 1. Registration failure will be ignored and kept retrying if check=false is set in URL, otherwise exception will be thrown <br>
* 2. Persistence is required if dynamic=false is set in URL, otherwise, the registration info will be removed automatically when register quits accidentally <br>
* 3. Persistent by category if category=overrides is set in URL, default category is providers. It is possible to notify by category. <br>
- * 4. Data lost is not tolerant when registry server reboots or network jitter happens. <br>
+ * 4. Data lost is not tolerant when registry server reboots or network jitter happens. <br>
* 5. It is not allowed to override each other when URLs have same URI part but different parameters <br>
- *
+ *
* <span class="hljs-doctag">@param</span> url registration info,null is not allowed, e.g.: dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span></span>;
-
+
<span class="hljs-comment">/**
* Unregister service.
- *
+ *
* Contract for unregistering service: <br>
* 1. IllegalStateException should be thrown when registration info which's supposed to be persistent (with dynamic=false set) cannot be found, otherwise it should be ignored. <br>
* 2. To cancel one service, extract match on its URL will be honored <br>
- *
+ *
* <span class="hljs-doctag">@param</span> url registration info,null is not allowed, e.g.: dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">unregister</span><span class="hljs-params">(URL url)</span></span>;
-
+
<span class="hljs-comment">/**
* 订阅服务.
* Subscribe service.
- *
+ *
* Contract for subscribing service: <br>
* 1. Subscription failure will be ignored and kept retrying if check=false is set in URL <br>
* 2. Only the specified category will be notified if category=overrides is set in URL. Categories are seperated with comma, and all categorized data will be subscribed when wildcard "*" is specified. <br>
@@ -87,52 +87,52 @@
* 5. Subscription will be automatically recoverred when registry server reboots or network jitter happens. <br>
* 6. It is not allowed to override each other when URLs have same URI part but different parameters <br>
* 7. Subscription procedure will not return until the first notification happens. <br>
- *
+ *
* <span class="hljs-doctag">@param</span> url URL for subscription, null isn't allowed, e.g.: consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* <span class="hljs-doctag">@param</span> listener notification listener, null is not allowed
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">subscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span></span>;
-
+
<span class="hljs-comment">/**
* Unsubscribe service.
- *
+ *
* Contract for unsubscribing service: <br>
* 1. Simply ignore if not subscribe <br>
* 2. Unsubscribe with URL exact match <br>
- *
+ *
* <span class="hljs-doctag">@param</span> url URL for unsubscription, null is not allowed, e.g.: consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* <span class="hljs-doctag">@param</span> listener notification listener, null is not allowed
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">unsubscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span></span>;
-
+
<span class="hljs-comment">/**
* 查询注册列表,与订阅的推模式相对应,这里为拉模式,只返回一次结果。
* Lookup subscription list. Compared to push mode for subscription, this is pull mode and returns result only once.
- *
+ *
* <span class="hljs-doctag">@see</span> org.apache.dubbo.registry.NotifyListener#notify(List)
* <span class="hljs-doctag">@param</span> url URL for query, null is not allowed, e.g.: consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* <span class="hljs-doctag">@return</span> subscription list, could be null, has the same meaning as the parameters in {<span class="hljs-doctag">@link</span> org.apache.dubbo.registry.NotifyListener#notify(List<URL>)}.
*/</span>
<span class="hljs-function">List<URL> <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span></span>;
-
+
}
</code></pre>
<p>NotifyListener.java:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">NotifyListener</span> </span>{
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">NotifyListener</span> </span>{
<span class="hljs-comment">/**
* Fire event when receive service change notification.
- *
+ *
* Contract for notify: <br>
* 1. Always notify with the whole data instead of partial data from the perspective of service interface and data type. In this way, user needs not compare with the previous result. <br>
* 2. First notification for subscription must contain the full set of data for one particular service <br>
* 3. It is allowed to separate the different type of data in the upcoming notifications, e.g.: it is legal to only notify one of types among providers, consumers, routes or overrides each time, but pls. note for this particular type, the data must be a full set. <br>
* 4. If the data for one particular type is empty, need to notify with a special URL which has empty as its protocol and has category parameter for this particluar type.
* 5. Notifier (usually it is monitor center) needs to guarantee the notification sequence by, for say: single thread push, queuing in order, versioning, etc. <br>
- *
+ *
* <span class="hljs-doctag">@param</span> urls subscription list, always not empty, equivalent to the return result of {<span class="hljs-doctag">@link</span> org.apache.dubbo.registry.RegistryService#lookup(URL)}.
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">notify</span><span class="hljs-params">(List<URL> urls)</span></span>;
-
+
}
</code></pre>
<h2>Existing Extension</h2>
@@ -153,11 +153,11 @@
</code></pre>
<p>XxxRegistryFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.RegistryFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.Registry;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.URL;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRegistryFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">RegistryFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxRegistry(url);
@@ -166,11 +166,11 @@
</code></pre>
<p>XxxRegistry.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.Registry;
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.NotifyListener;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.URL;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRegistry</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Registry</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -206,4 +206,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/remoting.html b/en-us/docs/dev/impls/remoting.html
index aef28f9..b8add83 100644
--- a/en-us/docs/dev/impls/remoting.html
+++ b/en-us/docs/dev/impls/remoting.html
@@ -23,9 +23,9 @@
</ul>
<h2>Extension Configuration</h2>
<pre><code class="language-xml"><span class="hljs-comment"><!-- server and client use the same transporter --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">transporter</span>=<span class="hljs-string">"xxx"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">transporter</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- server and client use the different transporter --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">server</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">client</span>=<span class="hljs-string">"xxx"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">server</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">client</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- default configuration, will take effect when transport/server/client attribute is not set in <dubbo:protocol> --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">transporter</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">server</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">client</span>=<span class="hljs-string">"xxx"</span> /></span>
</code></pre>
@@ -52,9 +52,9 @@
</code></pre>
<p>XxxTransporter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.Transporter;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxTransporter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Transporter</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Server <span class="hljs-title">bind</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxServer(url, handler);
@@ -66,9 +66,9 @@
</code></pre>
<p>XxxServer.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.transport.transporter.AbstractServer;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxServer</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractServer</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxServer</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(url, handler);
@@ -89,9 +89,9 @@
</code></pre>
<p>XxxClient.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.transport.transporter.AbstractClient;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxClient</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractClient</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxServer</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(url, handler);
@@ -130,4 +130,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/router.html b/en-us/docs/dev/impls/router.html
index 5cc40bb..7035408 100644
--- a/en-us/docs/dev/impls/router.html
+++ b/en-us/docs/dev/impls/router.html
@@ -41,12 +41,12 @@
</code></pre>
<p>XxxRouterFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.RouterFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRouterFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">RouterFactory</span> </span>{
<span class="hljs-keyword">public</span> <T> List<Invoker<T>> select(List<Invoker<T>> invokers, Invocation invocation) <span class="hljs-keyword">throws</span> RpcException {
<span class="hljs-comment">// ...</span>
@@ -73,4 +73,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/serialize.html b/en-us/docs/dev/impls/serialize.html
index 4d668ba..3d64843 100644
--- a/en-us/docs/dev/impls/serialize.html
+++ b/en-us/docs/dev/impls/serialize.html
@@ -51,12 +51,12 @@
</code></pre>
<p>XxxSerialization.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.serialize.Serialization;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.serialize.ObjectInput;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.serialize.ObjectOutput;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxSerialization</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serialization</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> ObjectOutput <span class="hljs-title">serialize</span><span class="hljs-params">(Parameters parameters, OutputStream output)</span> <span class="hljs-keyword">throws</span> IOException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxObjectOutput(output);
@@ -86,4 +86,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/status-checker.html b/en-us/docs/dev/impls/status-checker.html
index 1aade09..4adee64 100644
--- a/en-us/docs/dev/impls/status-checker.html
+++ b/en-us/docs/dev/impls/status-checker.html
@@ -47,9 +47,9 @@
</code></pre>
<p>XxxStatusChecker.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.status.StatusChecker;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxStatusChecker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">StatusChecker</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Status <span class="hljs-title">check</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -76,4 +76,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/telnet-handler.html b/en-us/docs/dev/impls/telnet-handler.html
index c9cd1b6..61c8a66 100644
--- a/en-us/docs/dev/impls/telnet-handler.html
+++ b/en-us/docs/dev/impls/telnet-handler.html
@@ -51,11 +51,11 @@
</code></pre>
<p>XxxTelnetHandler.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.telnet.TelnetHandler;
-
+
<span class="hljs-meta">@Help</span>(parameter=<span class="hljs-string">"..."</span>, summary=<span class="hljs-string">"..."</span>, detail=<span class="hljs-string">"..."</span>)
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxTelnetHandler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">TelnetHandler</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">telnet</span><span class="hljs-params">(Channel channel, String message)</span> <span class="hljs-keyword">throws</span> RemotingException </span>{
<span class="hljs-comment">// ...</span>
@@ -86,4 +86,4 @@ dubbo> xxx args
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/threadpool.html b/en-us/docs/dev/impls/threadpool.html
index b2378e7..3a859c1 100644
--- a/en-us/docs/dev/impls/threadpool.html
+++ b/en-us/docs/dev/impls/threadpool.html
@@ -42,10 +42,10 @@
</code></pre>
<p>XxxThreadPool.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.threadpool.ThreadPool;
<span class="hljs-keyword">import</span> java.util.concurrent.Executor;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxThreadPool</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ThreadPool</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Executor <span class="hljs-title">getExecutor</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -72,4 +72,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/impls/validation.html b/en-us/docs/dev/impls/validation.html
index fbe8760..22b2cac 100644
--- a/en-us/docs/dev/impls/validation.html
+++ b/en-us/docs/dev/impls/validation.html
@@ -39,9 +39,9 @@
</code></pre>
<p>XxxValidation.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.validation.Validation;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxValidation</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Validation</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Object <span class="hljs-title">getValidator</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -50,9 +50,9 @@
</code></pre>
<p>XxxValidator.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.validation.Validator;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxValidator</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Validator</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxValidator</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -82,4 +82,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/introduction.html b/en-us/docs/dev/introduction.html
index 75d3539..a31c542 100644
--- a/en-us/docs/dev/introduction.html
+++ b/en-us/docs/dev/introduction.html
@@ -29,4 +29,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/code-detail.html b/en-us/docs/dev/principals/code-detail.html
index 7fec0a6..c8c7960 100644
--- a/en-us/docs/dev/principals/code-detail.html
+++ b/en-us/docs/dev/principals/code-detail.html
@@ -50,4 +50,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/configuration.html b/en-us/docs/dev/principals/configuration.html
index a526d41..f8fc0c8 100644
--- a/en-us/docs/dev/principals/configuration.html
+++ b/en-us/docs/dev/principals/configuration.html
@@ -82,4 +82,4 @@ Dubbo, moreover, the old version all the timeout, retries, load balancing strate
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/dummy.html b/en-us/docs/dev/principals/dummy.html
index 731fac1..19e0ab1 100644
--- a/en-us/docs/dev/principals/dummy.html
+++ b/en-us/docs/dev/principals/dummy.html
@@ -19,47 +19,47 @@
<p>Recently I was feeling stupid because I solved too many stupid problems. The service framework is becoming more widely used. Every day, I have to help the endpoint user to resolve problems. Gradually, it is found that most of the problems are configuration errors, or duplicated files or classes, or network failure. So I prepare to add some "fool-proof" design to the further version. It may be very simple, but it is still a little help for troubleshooting speed. I hope that I [...]
<h2>Check for duplicated jars</h2>
<p>The most annoying problem is that, if we have several jars with different version number at the same time, there will be a problem. Imagine that, a new version of the Class A may invoke a old version of the Class B, it's related to the JVM loading order. The problem may encounter occasionally and hard to resolve. So the first, let's try to avoid it. For each jar package, pick a class that will be loaded, check it for duplication for example:</p>
-<pre><code class="language-java"><span class="hljs-keyword">static</span> {
- Duplicate.checkDuplicate(Xxx.class);
-}
+<pre><code class="language-java"><span class="hljs-keyword">static</span> {
+ Duplicate.checkDuplicate(Xxx.class);
+}
</code></pre>
<p>Utility class for check duplication:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Duplicate</span> </span>{
-
- <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Duplicate</span><span class="hljs-params">()</span> </span>{}
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(Class cls)</span> </span>{
- checkDuplicate(cls.getName().replace(<span class="hljs-string">'.'</span>, <span class="hljs-string">'/'</span>) + <span class="hljs-string">".class"</span>);
- }
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(String path)</span> </span>{
- <span class="hljs-keyword">try</span> {
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Duplicate</span> </span>{
+
+ <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Duplicate</span><span class="hljs-params">()</span> </span>{}
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(Class cls)</span> </span>{
+ checkDuplicate(cls.getName().replace(<span class="hljs-string">'.'</span>, <span class="hljs-string">'/'</span>) + <span class="hljs-string">".class"</span>);
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(String path)</span> </span>{
+ <span class="hljs-keyword">try</span> {
<span class="hljs-comment">// search from ClassPath</span>
- Enumeration urls = Thread.currentThread().getContextClassLoader().getResources(path);
- Set files = <span class="hljs-keyword">new</span> HashSet();
- <span class="hljs-keyword">while</span> (urls.hasMoreElements()) {
- URL url = urls.nextElement();
- <span class="hljs-keyword">if</span> (url != <span class="hljs-keyword">null</span>) {
- String file = url.getFile();
- <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> &amp;&amp; file.length() &gt; <span class="hljs-number">0</span>) {
- files.add(file);
- }
- }
- }
+ Enumeration urls = Thread.currentThread().getContextClassLoader().getResources(path);
+ Set files = <span class="hljs-keyword">new</span> HashSet();
+ <span class="hljs-keyword">while</span> (urls.hasMoreElements()) {
+ URL url = urls.nextElement();
+ <span class="hljs-keyword">if</span> (url != <span class="hljs-keyword">null</span>) {
+ String file = url.getFile();
+ <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> &amp;&amp; file.length() &gt; <span class="hljs-number">0</span>) {
+ files.add(file);
+ }
+ }
+ }
<span class="hljs-comment">// if there are more than one indicates duplication</span>
- <span class="hljs-keyword">if</span> (files.size() &gt; <span class="hljs-number">1</span>) {
- logger.error(<span class="hljs-string">"Duplicate class "</span> + path + <span class="hljs-string">" in "</span> + files.size() + <span class="hljs-string">" jar "</span> + files);
- }
+ <span class="hljs-keyword">if</span> (files.size() &gt; <span class="hljs-number">1</span>) {
+ logger.error(<span class="hljs-string">"Duplicate class "</span> + path + <span class="hljs-string">" in "</span> + files.size() + <span class="hljs-string">" jar "</span> + files);
+ }
} <span class="hljs-keyword">catch</span> (Throwable e) { <span class="hljs-comment">// safe guard</span>
- logger.error(e.getMessage(), e);
- }
- }
-
-}
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+}
</code></pre>
<h2>Check for duplicate configuration files</h2>
<p>It is also a frequently encountered problem that the configuration file is loaded incorrectly. Users often complain that they have the right configuration but program says something is wrong. After some troubleshooting, found that the configuration file is not even loaded. Many products put a default configuration file under classpath, if there are several, usually the first one loaded by JVM is effective. In order not to be bothered by such problem, just like checking duplicate jars, [...]
-<pre><code class="language-java">Duplicate.checkDuplicate(<span class="hljs-string">"xxx.properties"</span>);
+<pre><code class="language-java">Duplicate.checkDuplicate(<span class="hljs-string">"xxx.properties"</span>);
</code></pre>
<h2>Check for optional configuration</h2>
<p>The required configuration is estimated to be checked by everyone, because without it the program may not even start. However, for some optional parameters, some checks should also be made. For example, the service framework allows the service consumers and service providers to be associated with the registry, and allows direct configuring the service provider address to point-to-point direct connect. At this time, the registry address is optional, but if there is no point-to-point di [...]
@@ -67,126 +67,126 @@
<p>It's hard to troubleshooting problem with a simple error message which has no detail information. For example, the last time I encountered a "Failed to get session" exception, just the few words. I'm wondering which session is wrong? What is the reason Failed? It makes me crazy, the problem happens in an production environment and it's hard to reproduce. The exception should have some basic context information, such as author info, operation system, failed reason. The best e [...]
<h2>And also the environment information</h2>
<p>Every time an application error occurs, the developer or QA will send the error message and ask the reason. At this time, I will ask some question again, which version is used? Is it a production environment or a development environment? Which registry center? Which project is it? Which machine? And which service? The problem is, some developers or QA can't tell the difference, it waste me a lot of time. So, it is best to log some environment information, we can make a wrapper. Decora [...]
-<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">error</span><span class="hljs-params">(String msg, Throwable e)</span> </span>{
- delegate.error(msg + <span class="hljs-string">" on server "</span> + InetAddress.getLocalHost() + <span class="hljs-string">" using version "</span> + Version.getVersion(), e);
-}
+<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">error</span><span class="hljs-params">(String msg, Throwable e)</span> </span>{
+ delegate.error(msg + <span class="hljs-string">" on server "</span> + InetAddress.getLocalHost() + <span class="hljs-string">" using version "</span> + Version.getVersion(), e);
+}
</code></pre>
<p>Utility class for retrieve version:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Version</span> </span>{
-
- <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Version</span><span class="hljs-params">()</span> </span>{}
-
- <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Logger logger = LoggerFactory.getLogger(Version.class);
-
- <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Pattern VERSION_PATTERN = Pattern.compile(<span class="hljs-string">"([0-9][0-9\\.\\-]*)\\.jar"</span>);
-
- <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String VERSION = getVersion(Version.class, <span class="hljs-string">"2.0.0"</span>);
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">()</span></span>{
- <span class="hljs-keyword">return</span> VERSION;
- }
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">(Class cls, String defaultVersion)</span> </span>{
- <span class="hljs-keyword">try</span> {
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Version</span> </span>{
+
+ <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Version</span><span class="hljs-params">()</span> </span>{}
+
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Logger logger = LoggerFactory.getLogger(Version.class);
+
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Pattern VERSION_PATTERN = Pattern.compile(<span class="hljs-string">"([0-9][0-9\\.\\-]*)\\.jar"</span>);
+
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String VERSION = getVersion(Version.class, <span class="hljs-string">"2.0.0"</span>);
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">()</span></span>{
+ <span class="hljs-keyword">return</span> VERSION;
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">(Class cls, String defaultVersion)</span> </span>{
+ <span class="hljs-keyword">try</span> {
<span class="hljs-comment">// search version number from MANIFEST.MF </span>
- String version = cls.getPackage().getImplementationVersion();
- <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
- version = cls.getPackage().getSpecificationVersion();
- }
- <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
+ String version = cls.getPackage().getImplementationVersion();
+ <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
+ version = cls.getPackage().getSpecificationVersion();
+ }
+ <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
<span class="hljs-comment">// if not found, extract from jar name</span>
- String file = cls.getProtectionDomain().getCodeSource().getLocation().getFile();
- <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> &amp;&amp; file.length() &gt; <span class="hljs-number">0</span> &amp;&amp; file.endsWith(<span class="hljs-string">".jar"</span>)) {
- Matcher matcher = VERSION_PATTERN.matcher(file);
- <span class="hljs-keyword">while</span> (matcher.find() &amp;&amp; matcher.groupCount() &gt; <span class="hljs-number">0</span>) {
- version = matcher.group(<span class="hljs-number">1</span>);
- }
- }
- }
+ String file = cls.getProtectionDomain().getCodeSource().getLocation().getFile();
+ <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> &amp;&amp; file.length() &gt; <span class="hljs-number">0</span> &amp;&amp; file.endsWith(<span class="hljs-string">".jar"</span>)) {
+ Matcher matcher = VERSION_PATTERN.matcher(file);
+ <span class="hljs-keyword">while</span> (matcher.find() &amp;&amp; matcher.groupCount() &gt; <span class="hljs-number">0</span>) {
+ version = matcher.group(<span class="hljs-number">1</span>);
+ }
+ }
+ }
<span class="hljs-comment">// return version, return default if null</span>
- <span class="hljs-keyword">return</span> version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span> ? defaultVersion : version;
- } <span class="hljs-keyword">catch</span> (Throwable e) {
+ <span class="hljs-keyword">return</span> version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span> ? defaultVersion : version;
+ } <span class="hljs-keyword">catch</span> (Throwable e) {
<span class="hljs-comment">// ignore exception, return default version</span>
- logger.error(e.getMessage(), e);
- <span class="hljs-keyword">return</span> defaultVersion;
- }
- }
-
+ logger.error(e.getMessage(), e);
+ <span class="hljs-keyword">return</span> defaultVersion;
+ }
+ }
+
}
</code></pre>
<h2>Dump before kill</h2>
<p>Every time there is a problem with the production environment, everyone panics. Usually the most direct way is to rollback and restart, to reduce the downtime. So that the scene is destroyed, and it's hard to check the problem afterwards. Some problem is hard to reproduce in development environment and may happen under hard pressure. It is unlikely let the developer or Appops manually backup all the data before. Therefore, it is best to call dump before the kill script to backup autom [...]
-<pre><code class="language-sh">JAVA_HOME=/usr/java
-OUTPUT_HOME=~/output
-DEPLOY_HOME=`dirname <span class="hljs-variable">$0</span>`
-HOST_NAME=`hostname`
-
-DUMP_PIDS=`ps --no-heading -C java -f --width 1000 | grep <span class="hljs-string">"<span class="hljs-variable">$DEPLOY_HOME</span>"</span> |awk <span class="hljs-string">'{print $2}'</span>`
-<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$DUMP_PIDS</span>"</span> ]; <span class="hljs-keyword">then</span>
- <span class="hljs-built_in">echo</span> <span class="hljs-string">"The server <span class="hljs-variable">$HOST_NAME</span> is not started!"</span>
- <span class="hljs-built_in">exit</span> 1;
-<span class="hljs-keyword">fi</span>
-
-DUMP_ROOT=<span class="hljs-variable">$OUTPUT_HOME</span>/dump
-<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_ROOT</span> ]; <span class="hljs-keyword">then</span>
- mkdir <span class="hljs-variable">$DUMP_ROOT</span>
-<span class="hljs-keyword">fi</span>
-
-DUMP_DATE=`date +%Y%m%d%H%M%S`
-DUMP_DIR=<span class="hljs-variable">$DUMP_ROOT</span>/dump-<span class="hljs-variable">$DUMP_DATE</span>
-<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_DIR</span> ]; <span class="hljs-keyword">then</span>
- mkdir <span class="hljs-variable">$DUMP_DIR</span>
-<span class="hljs-keyword">fi</span>
-
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">"Dumping the server <span class="hljs-variable">$HOST_NAME</span> ...\c"</span>
-<span class="hljs-keyword">for</span> PID <span class="hljs-keyword">in</span> <span class="hljs-variable">$DUMP_PIDS</span> ; <span class="hljs-keyword">do</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jstack <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstack-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jinfo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jinfo-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gcutil <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gcutil-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gccapacity <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gccapacity-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -heap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-heap-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -histo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-histo-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-keyword">if</span> [ -r /usr/sbin/lsof ]; <span class="hljs-keyword">then</span>
- /usr/sbin/lsof -p <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/lsof-<span class="hljs-variable">$PID</span>.dump
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">done</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/sar ]; <span class="hljs-keyword">then</span>
-/usr/bin/sar > <span class="hljs-variable">$DUMP_DIR</span>/sar.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/uptime ]; <span class="hljs-keyword">then</span>
-/usr/bin/uptime > <span class="hljs-variable">$DUMP_DIR</span>/uptime.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/free ]; <span class="hljs-keyword">then</span>
-/usr/bin/free -t > <span class="hljs-variable">$DUMP_DIR</span>/free.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/vmstat ]; <span class="hljs-keyword">then</span>
-/usr/bin/vmstat > <span class="hljs-variable">$DUMP_DIR</span>/vmstat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/mpstat ]; <span class="hljs-keyword">then</span>
-/usr/bin/mpstat > <span class="hljs-variable">$DUMP_DIR</span>/mpstat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/iostat ]; <span class="hljs-keyword">then</span>
-/usr/bin/iostat > <span class="hljs-variable">$DUMP_DIR</span>/iostat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /bin/netstat ]; <span class="hljs-keyword">then</span>
-/bin/netstat > <span class="hljs-variable">$DUMP_DIR</span>/netstat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
+<pre><code class="language-sh">JAVA_HOME=/usr/java
+OUTPUT_HOME=~/output
+DEPLOY_HOME=`dirname <span class="hljs-variable">$0</span>`
+HOST_NAME=`hostname`
+
+DUMP_PIDS=`ps --no-heading -C java -f --width 1000 | grep <span class="hljs-string">"<span class="hljs-variable">$DEPLOY_HOME</span>"</span> |awk <span class="hljs-string">'{print $2}'</span>`
+<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$DUMP_PIDS</span>"</span> ]; <span class="hljs-keyword">then</span>
+ <span class="hljs-built_in">echo</span> <span class="hljs-string">"The server <span class="hljs-variable">$HOST_NAME</span> is not started!"</span>
+ <span class="hljs-built_in">exit</span> 1;
+<span class="hljs-keyword">fi</span>
+
+DUMP_ROOT=<span class="hljs-variable">$OUTPUT_HOME</span>/dump
+<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_ROOT</span> ]; <span class="hljs-keyword">then</span>
+ mkdir <span class="hljs-variable">$DUMP_ROOT</span>
+<span class="hljs-keyword">fi</span>
+
+DUMP_DATE=`date +%Y%m%d%H%M%S`
+DUMP_DIR=<span class="hljs-variable">$DUMP_ROOT</span>/dump-<span class="hljs-variable">$DUMP_DATE</span>
+<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_DIR</span> ]; <span class="hljs-keyword">then</span>
+ mkdir <span class="hljs-variable">$DUMP_DIR</span>
+<span class="hljs-keyword">fi</span>
+
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">"Dumping the server <span class="hljs-variable">$HOST_NAME</span> ...\c"</span>
+<span class="hljs-keyword">for</span> PID <span class="hljs-keyword">in</span> <span class="hljs-variable">$DUMP_PIDS</span> ; <span class="hljs-keyword">do</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jstack <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstack-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jinfo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jinfo-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gcutil <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gcutil-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gccapacity <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gccapacity-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -heap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-heap-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -histo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-histo-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-keyword">if</span> [ -r /usr/sbin/lsof ]; <span class="hljs-keyword">then</span>
+ /usr/sbin/lsof -p <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/lsof-<span class="hljs-variable">$PID</span>.dump
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">done</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/sar ]; <span class="hljs-keyword">then</span>
+/usr/bin/sar > <span class="hljs-variable">$DUMP_DIR</span>/sar.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/uptime ]; <span class="hljs-keyword">then</span>
+/usr/bin/uptime > <span class="hljs-variable">$DUMP_DIR</span>/uptime.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/free ]; <span class="hljs-keyword">then</span>
+/usr/bin/free -t > <span class="hljs-variable">$DUMP_DIR</span>/free.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/vmstat ]; <span class="hljs-keyword">then</span>
+/usr/bin/vmstat > <span class="hljs-variable">$DUMP_DIR</span>/vmstat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/mpstat ]; <span class="hljs-keyword">then</span>
+/usr/bin/mpstat > <span class="hljs-variable">$DUMP_DIR</span>/mpstat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/iostat ]; <span class="hljs-keyword">then</span>
+/usr/bin/iostat > <span class="hljs-variable">$DUMP_DIR</span>/iostat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /bin/netstat ]; <span class="hljs-keyword">then</span>
+/bin/netstat > <span class="hljs-variable">$DUMP_DIR</span>/netstat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"OK!"</span>
</code></pre>
</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">Foundation</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">License</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">Events [...]
@@ -206,4 +206,4 @@ DUMP_DIR=<span class="hljs-variable">$DUMP_ROOT</span>/dump-<span class="hljs-va
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/expansibility.html b/en-us/docs/dev/principals/expansibility.html
index bcb4113..7362c9f 100644
--- a/en-us/docs/dev/principals/expansibility.html
+++ b/en-us/docs/dev/principals/expansibility.html
@@ -40,4 +40,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/extension.html b/en-us/docs/dev/principals/extension.html
index 1394314..ed5a4bf 100644
--- a/en-us/docs/dev/principals/extension.html
+++ b/en-us/docs/dev/principals/extension.html
@@ -34,39 +34,39 @@
<p><img src="../sources/images/design-step2.png" alt="design-step-2"></p>
<h2>Step 3, the entire pipeline design, logic framework itself, are implemented using cross section intercept</h2>
<p>Now a lot of logic, are placed in the base class implementation, then by the method of template back to the realization of the tone categories, including: local, mock, generic, echo, token, accesslog, monitor, count, limit, etc., can use the Filter to realize all split, each function is called a ring on the chain.Such as: (the base class template method)</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">abstract</span> AbstractInvoker implements Invoker {
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invocation inv)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">abstract</span> AbstractInvoker implements Invoker {
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invocation inv)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// Pseudo code </span>
- active ++;
- <span class="hljs-keyword">if</span> (active > max)
- wait();
-
- doInvoke(inv);
-
- active --;
- notify();
- }
-
- <span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">abstract</span> Result <span class="hljs-title">doInvoke</span><span class="hljs-params">(Invocation inv)</span> <span class="hljs-keyword">throws</span> RpcException
-
-}
+ active ++;
+ <span class="hljs-keyword">if</span> (active > max)
+ wait();
+
+ doInvoke(inv);
+
+ active --;
+ notify();
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">protected</span> <span class="hljs-keyword">abstract</span> Result <span class="hljs-title">doInvoke</span><span class="hljs-params">(Invocation inv)</span> <span class="hljs-keyword">throws</span> RpcException
+
+}
</span></code></pre>
<p>To: (chain filter)</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">abstract</span> LimitFilter implements Filter {
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invoker chain, Invocation inv)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">abstract</span> LimitFilter implements Filter {
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invoker chain, Invocation inv)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// Pseudo code </span>
- active ++;
- <span class="hljs-keyword">if</span> (active > max)
- wait();
-
- chain.invoke(inv);
-
- active --;
- notify();
- }
-
+ active ++;
+ <span class="hljs-keyword">if</span> (active > max)
+ wait();
+
+ chain.invoke(inv);
+
+ active --;
+ notify();
+ }
+
}
</code></pre>
<h2>Step 4, a minimum concept, consistent conceptual model</h2>
@@ -75,16 +75,16 @@
<pre><code class="language-java"><span class="hljs-function">Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invocation invocation)</span> <span class="hljs-keyword">throws</span> RpcException</span>;
</code></pre>
<p>The Exporter method signature as follows:</p>
-<pre><code class="language-java"><span class="hljs-function">Object <span class="hljs-title">invoke</span><span class="hljs-params">(Method method, Object[] args)</span> <span class="hljs-keyword">throws</span> Throwable</span>;
+<pre><code class="language-java"><span class="hljs-function">Object <span class="hljs-title">invoke</span><span class="hljs-params">(Method method, Object[] args)</span> <span class="hljs-keyword">throws</span> Throwable</span>;
</code></pre>
<p>But they are the same, only is a on the client side, one on the server side, different model classes are applied.</p>
<p>For example, the URL string, parse and assembled, not a URL model classes, and the Parameters of the URL, but sometimes the Map, and sometimes the Parameters class wrapping,</p>
-<pre><code class="language-java">export(String url)
-createExporter(String host, <span class="hljs-keyword">int</span> port, Parameters params);
+<pre><code class="language-java">export(String url)
+createExporter(String host, <span class="hljs-keyword">int</span> port, Parameters params);
</code></pre>
<p>Use consistent model:</p>
-<pre><code class="language-java">export(URL url)
-createExporter(URL url);
+<pre><code class="language-java">export(URL url)
+createExporter(URL url);
</code></pre>
<p>For example, the existing: Invoker, Exporter, InvocationHandler, FilterChainAre actually invoke behavior at different stages, can abstract away completely, unified for the Invoker, reduce the concept.</p>
<h2>Step 5, hierarchical, modular extensions, rather than generic type extension</h2>
@@ -114,4 +114,4 @@ But these are the core?RPC can Run, kicked off what?And what is not kick off?Bas
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/general-knowledge.html b/en-us/docs/dev/principals/general-knowledge.html
index af1505c..98fa33f 100644
--- a/en-us/docs/dev/principals/general-knowledge.html
+++ b/en-us/docs/dev/principals/general-knowledge.html
@@ -64,4 +64,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/introduction.html b/en-us/docs/dev/principals/introduction.html
index 96753c8..993ca87 100644
--- a/en-us/docs/dev/principals/introduction.html
+++ b/en-us/docs/dev/principals/introduction.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/principals/robustness.html b/en-us/docs/dev/principals/robustness.html
index 8e133b8..df9e841 100644
--- a/en-us/docs/dev/principals/robustness.html
+++ b/en-us/docs/dev/principals/robustness.html
@@ -78,4 +78,4 @@ This decrease after operation, ensure database can cooling Down (Cool Down).</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/dev/release.html b/en-us/docs/dev/release.html
index 794b934..6aef348 100644
--- a/en-us/docs/dev/release.html
+++ b/en-us/docs/dev/release.html
@@ -62,4 +62,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.html b/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.html
index b208335..9906a44 100644
--- a/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.html
+++ b/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.html
@@ -64,4 +64,4 @@ This process will ask for the Apache id and password.</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.json b/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.json
index 2b8c853..95d85db 100644
--- a/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.json
+++ b/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Apache Official Dubbo Page Maintenance</h1>\n<p>Apache has an official website that maintains information about all incubation projects.\nEach incubation project has an information page under this website.\nDubbo's information page address is <a href=\"https://incubator.apache.org/projects/dubbo.html\">https://incubator.apache.org/projects/dubbo.html</a>.</p>\n<p>When the project has undergone major changes, such as the addition of a new committer,\nthe election of a new [...]
"link": "/en-us/docs/developers/committer-guide/apache-dubbo-page_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.html b/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.html
index f10148c..1da5a73 100644
--- a/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.html
+++ b/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.html
@@ -70,4 +70,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.json b/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.json
index 324872b..e21f2d6 100644
--- a/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.json
+++ b/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Label an Issue</h1>\n<p>If you are handling an issue, remember to <strong>mark the issue cearly with one or more labels</strong> whenever you think it's meaningful. With labels on, other developers can easily recognize problems, classify them or track progress.</p>\n<p>For issues or pull requests that need coding and further version release to fix, you should always <strong>mark it with a <a href=\"https://github.com/apache/dubbo/milestones\">milestone</a></strong>.</p>\ [...]
"link": "/en-us/docs/developers/committer-guide/label-an-issue-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/new-committer-guide_dev.html b/en-us/docs/developers/committer-guide/new-committer-guide_dev.html
index 2910bfc..6d974f7 100644
--- a/en-us/docs/developers/committer-guide/new-committer-guide_dev.html
+++ b/en-us/docs/developers/committer-guide/new-committer-guide_dev.html
@@ -116,4 +116,4 @@ If not discussed in the community (mailing list), just as it did not happen.</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/release-guide_dev.html b/en-us/docs/developers/committer-guide/release-guide_dev.html
index e33ce7a..1e8856e 100644
--- a/en-us/docs/developers/committer-guide/release-guide_dev.html
+++ b/en-us/docs/developers/committer-guide/release-guide_dev.html
@@ -57,7 +57,7 @@ Please specify how long the key should be valid.
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
-Key is valid for? (0)
+Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
@@ -86,7 +86,7 @@ pub rsa4096 2018-11-12 [SC]
63AAE9838F4A303E40BAF5FEA3A1CA7A5D4A3981 <span class="hljs-comment"># Last 8 character(5D4A3981) as key id,it will be used when send public key to keyserver</span>
uid [ 绝对 ] Victory Cao (CODE SIGNING KEY) <victory@apache.org>
sub rsa4096 2018-11-12 [E]
-
+
<span class="hljs-comment"># send public key to keyserver via key id </span>
$ gpg --keyserver pgpkeys.mit.edu --send-key 28681CB1
@@ -108,7 +108,7 @@ default-key 28681CB1
$ gpg --yes --delete-secret-keys shenglicao2@gmail.com <span class="hljs-comment">### indicate email address </span>
-$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
+$ gpg --delete-keys 1808C6444C781C0AEA0AAD4C4D6A8007D20DB8A4
</code></pre>
</li>
@@ -358,8 +358,8 @@ The vote will be open for at least 72 hours or until necessary number of votes a
Please vote accordingly:
-[ ] +1 approve
-[ ] +0 no opinion
+[ ] +1 approve
+[ ] +0 no opinion
[ ] -1 disapprove with the reason
Thanks,
@@ -504,4 +504,4 @@ Apache Dubbo is an effort undergoing incubation at The Apache Software Foundatio
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/release-guide_dev.json b/en-us/docs/developers/committer-guide/release-guide_dev.json
index f64439e..4b1274f 100644
--- a/en-us/docs/developers/committer-guide/release-guide_dev.json
+++ b/en-us/docs/developers/committer-guide/release-guide_dev.json
@@ -6,4 +6,4 @@
"title": "Understanding the Apache Release Cycle",
"keywords": "Dubbo, Apache, Release"
}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/website-guide_dev.html b/en-us/docs/developers/committer-guide/website-guide_dev.html
index c9b3bb4..33152e8 100644
--- a/en-us/docs/developers/committer-guide/website-guide_dev.html
+++ b/en-us/docs/developers/committer-guide/website-guide_dev.html
@@ -34,4 +34,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/committer-guide/website-guide_dev.json b/en-us/docs/developers/committer-guide/website-guide_dev.json
index 14bc723..d9f6880 100644
--- a/en-us/docs/developers/committer-guide/website-guide_dev.json
+++ b/en-us/docs/developers/committer-guide/website-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Website Guide</h1>\n<ol>\n<li>The website repository of Apache Dubbo is <a href=\"https://github.com/apache/dubbo-website\">https://github.com/apache/dubbo-website</a></li>\n<li>After building the website, it'll be published to <a href=\"http://dubbo.apache.org\">dubbo.apache.org</a> automatically, you can also trigger it manually via <a href=\"https://selfserve.apache.org\">https://selfserve.apache.org</a> (need to login with Apache account)</li>\n</ol>\n",
"link": "/en-us/docs/developers/committer-guide/website-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/become-a-committer_dev.html b/en-us/docs/developers/contributor-guide/become-a-committer_dev.html
index 80dbeac..f142ec4 100644
--- a/en-us/docs/developers/contributor-guide/become-a-committer_dev.html
+++ b/en-us/docs/developers/contributor-guide/become-a-committer_dev.html
@@ -37,4 +37,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/cla-signing-guide_dev.html b/en-us/docs/developers/contributor-guide/cla-signing-guide_dev.html
index f1321f0..11aab84 100644
--- a/en-us/docs/developers/contributor-guide/cla-signing-guide_dev.html
+++ b/en-us/docs/developers/contributor-guide/cla-signing-guide_dev.html
@@ -56,4 +56,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.html b/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.html
index d4178ee..9ac1c41 100644
--- a/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.html
+++ b/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.html
@@ -64,4 +64,4 @@ For example:</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.json b/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.json
index 329b4ff..da2824f 100644
--- a/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.json
+++ b/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Extension guide</h1>\n<p>Dubbo Use microkernel + plugin design pattern. Microkernel is only responsible for assembling plugins, the functions of Dubbo are implemented by extension points(plugins), which means that all functions of Dubbo can be replaced by user customized extension.</p>\n<h2>Dubbo Ecosystem</h2>\n<p>We recommend you to put extension to Dubbo <a href=\"https://github.com/dubbo\">ecosystem</a>. Using this pattern will keep the core repository cleaner and de [...]
"link": "/en-us/docs/developers/contributor-guide/dubbo-extension-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html b/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html
index 20f5824..f160b56 100644
--- a/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html
+++ b/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html
@@ -108,4 +108,4 @@ subscription address.
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.json b/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.json
index d5d1e72..1e40247 100644
--- a/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.json
+++ b/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Mailing list subscription guide</h1>\n<p>The Dubbo developer mailing list (<a href=\"mailto:dev@dubbo.apache.org\">dev@dubbo.apache.org</a>) for Apache Incubator has been established, please feel free to subscribe and refer to [^1] for more details.</p>\n<p>You can also view <a href=\"https://lists.apache.org/list.html?dev@dubbo.apache.org\">the archive of the mailing list</a></p>\n<p>Here is a brief guide specific to Dubbo:</p>\n<ol>\n<li>Send an email to <a href=\"mail [...]
"link": "/en-us/docs/developers/contributor-guide/mailing-list-subscription-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.html b/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.html
index 2e424bd..c56e0ab 100644
--- a/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.html
+++ b/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.html
@@ -78,4 +78,4 @@ If you have any question regarding the check list, please feel free to ask on <a
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.json b/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.json
index a2103ce..7af98fd 100644
--- a/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.json
+++ b/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>New contributor guide</h1>\n<p>This is a guide for new comers who wants to contribute to Dubbo.</p>\n<h3>Subscribe to the mailing list</h3>\n<p>The mailing list is the recommended way for discussing almost anything that related to Dubbo. Please refer to this <a href=\"https://github.com/apache/dubbo/issues/1393\">issue</a> for detailed documentation on how to subscribe.</p>\n<ul>\n<li><a href=\"mailto:dev@dubbo.apache.org\">dev@dubbo.apache.org</a>: the develop mailing l [...]
"link": "/en-us/docs/developers/contributor-guide/new-contributor-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.html b/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.html
index bf17353..db8d159 100644
--- a/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.html
+++ b/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.html
@@ -43,4 +43,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.json b/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.json
index 236b394..f6eb1c8 100644
--- a/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.json
+++ b/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Reporting Security Issues</h1>\n<p>The Apache Software Foundation takes a rigorous standpoint in annihilating the security issues in its software projects. Apache Dubbo is highly sensitive and forthcoming to issues pertaining to its features and functionality.</p>\n<h2>REPORTING VULNERABILITY</h2>\n<p>If you have apprehensions regarding Dubbo's security or you discover vulnerability or potential threat, don’t hesitate to get in touch with the Apache Dubbo Security Team b [...]
"link": "/en-us/docs/developers/contributor-guide/reporting-security-issues_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/software-donation-guide_dev.html b/en-us/docs/developers/contributor-guide/software-donation-guide_dev.html
index ce70042..cb4992f 100644
--- a/en-us/docs/developers/contributor-guide/software-donation-guide_dev.html
+++ b/en-us/docs/developers/contributor-guide/software-donation-guide_dev.html
@@ -97,7 +97,7 @@ as of the date first written above.
Title: ____Director_____________________________ <--- Your boss's title here
- Representing: ____ABC Software Co., Ltd. _______
+ Representing: ____ABC Software Co., Ltd. _______
________________________________________________
@@ -129,4 +129,4 @@ List of software and other intellectual property covered by this agreement:
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/software-donation-guide_dev.json b/en-us/docs/developers/contributor-guide/software-donation-guide_dev.json
index 53e78d8..60375e5 100644
--- a/en-us/docs/developers/contributor-guide/software-donation-guide_dev.json
+++ b/en-us/docs/developers/contributor-guide/software-donation-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Software donation guide</h1>\n<p>Before you go through this guide, make sure you have confirmed with PMC that a SGA is actually needed.</p>\n<p>If you are donating significant amount of code or documentation to Apache Dubbo , you will be required to sign a <a href=\"https://www.apache.org/licenses/#grants\">Software Grant</a> before your code/doc could be merged.</p>\n<h4>Steps</h4>\n<ol>\n<li>Download this <a href=\"https://www.apache.org/licenses/software-grant-templat [...]
"link": "/en-us/docs/developers/contributor-guide/software-donation-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.html b/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.html
index 188a4c1..ce89945 100644
--- a/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.html
+++ b/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.html
@@ -50,4 +50,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.json b/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.json
index 9fb2fff..709366c 100644
--- a/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.json
+++ b/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>Test coverage guide</h1>\n<h3>1.The benefits of unit testing</h3>\n<ul>\n<li>Unit test code can help everyone to go into details and understand the function of the code.</li>\n<li>We can find bugs by test case, and then enhance the robustness of the code.</li>\n<li>Test case code is also the demo usage of the core code.</li>\n</ul>\n<h3>2.Some design principle of unit test case</h3>\n<ul>\n<li>Steps, fine-grained and combination conditions should be well designed.</li>\n [...]
"link": "/en-us/docs/developers/contributor-guide/test-coverage-guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/developers_dev.html b/en-us/docs/developers/developers_dev.html
index c92441b..57a063e 100644
--- a/en-us/docs/developers/developers_dev.html
+++ b/en-us/docs/developers/developers_dev.html
@@ -76,13 +76,6 @@
<td>+8</td>
</tr>
<tr>
-<td>leonleeldc</td>
-<td>Dingcheng Li</td>
-<td>Alibaba</td>
-<td>PMC</td>
-<td>+8</td>
-</tr>
-<tr>
<td>iluo</td>
<td>Ian Luo</td>
<td>Alibaba</td>
@@ -125,13 +118,6 @@
<td>+8</td>
</tr>
<tr>
-<td>yuyijq</td>
-<td>Zhaohui Yu</td>
-<td>Qunar</td>
-<td>PMC</td>
-<td>+8</td>
-</tr>
-<tr>
<td>yiji</td>
<td>Shang Zonghai</td>
<td>Youzan</td>
@@ -174,6 +160,20 @@
<td>+8</td>
</tr>
<tr>
+<td>leonleeldc</td>
+<td>Dingcheng Li</td>
+<td>Alibaba</td>
+<td>Committer</td>
+<td>+8</td>
+</tr>
+<tr>
+<td>yuyijq</td>
+<td>Zhaohui Yu</td>
+<td>Qunar</td>
+<td>Committer</td>
+<td>+8</td>
+</tr>
+<tr>
<td>mjk</td>
<td>Jinkai Ma</td>
<td>Handuyishe</td>
@@ -334,4 +334,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/developers_dev.json b/en-us/docs/developers/developers_dev.json
index 9439fdb..358b2dc 100644
--- a/en-us/docs/developers/developers_dev.json
+++ b/en-us/docs/developers/developers_dev.json
@@ -1,6 +1,6 @@
{
"filename": "developers_dev.md",
- "__html": "<h2>Developers</h2>\n<p>This page shows Dubbo developers. Please file PR to add or change items.</p>\n<h3>Committers</h3>\n<table>\n<thead>\n<tr>\n<th>Apache ID</th>\n<th>Name</th>\n<th>Organization</th>\n<th>Role</th>\n<th>TimeZone</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>jmclean</td>\n<td>Justin Mclean</td>\n<td>Apache</td>\n<td>Mentor</td>\n<td>+11</td>\n</tr>\n<tr>\n<td>markt</td>\n<td>Mark Thomas</td>\n<td>Apache</td>\n<td>Mentor</td>\n<td>+0</td>\n</tr>\n<tr>\n<td>wav [...]
+ "__html": "<h2>Developers</h2>\n<p>This page shows Dubbo developers. Please file PR to add or change items.</p>\n<h3>Committers</h3>\n<table>\n<thead>\n<tr>\n<th>Apache ID</th>\n<th>Name</th>\n<th>Organization</th>\n<th>Role</th>\n<th>TimeZone</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>jmclean</td>\n<td>Justin Mclean</td>\n<td>Apache</td>\n<td>Mentor</td>\n<td>+11</td>\n</tr>\n<tr>\n<td>markt</td>\n<td>Mark Thomas</td>\n<td>Apache</td>\n<td>Mentor</td>\n<td>+0</td>\n</tr>\n<tr>\n<td>wav [...]
"link": "/en-us/docs/developers/developers_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/guide_dev.html b/en-us/docs/developers/guide_dev.html
index 8852453..613b9d4 100644
--- a/en-us/docs/developers/guide_dev.html
+++ b/en-us/docs/developers/guide_dev.html
@@ -104,4 +104,4 @@ From the drop-down list, select <code>Import Scheme</code>, then select this opt
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/guide_dev.json b/en-us/docs/developers/guide_dev.json
index ab7df15..723293b 100644
--- a/en-us/docs/developers/guide_dev.json
+++ b/en-us/docs/developers/guide_dev.json
@@ -3,4 +3,4 @@
"__html": "<h2>Contributing to Dubbo</h2>\n<p>Dubbo is released under the non-restrictive Apache 2.0 license, and follows a very standard Github development process, using Github tracker for issues and merging pull requests into master. If you want to contribute even something trivial please do not hesitate, but follow the guidelines below.</p>\n<h3>Sign the Contributor License Agreement</h3>\n<p>Before we accept a non-trivial patch or pull request we will need you to sign the Contribu [...]
"link": "/en-us/docs/developers/guide_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/developers/user-guide/faq_dev.html b/en-us/docs/developers/user-guide/faq_dev.html
index 4a9c8c1..080cd45 100644
--- a/en-us/docs/developers/user-guide/faq_dev.html
+++ b/en-us/docs/developers/user-guide/faq_dev.html
@@ -51,4 +51,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/developers/user-guide/faq_dev.json b/en-us/docs/developers/user-guide/faq_dev.json
index 8c5c971..ed9f4c5 100644
--- a/en-us/docs/developers/user-guide/faq_dev.json
+++ b/en-us/docs/developers/user-guide/faq_dev.json
@@ -3,4 +3,4 @@
"__html": "<h1>FAQ</h1>\n<h3>Where is dubbo-admin?</h3>\n<p>dubbo-admin has been moved from core repository to <a href=\"https://github.com/apache/dubbo-admin\">https://github.com/apache/dubbo-admin</a> since 2.6.1</p>\n<h3>Which version should I choose?</h3>\n<p>Currently, dubbo keeps 3 versions evolve in parallel:</p>\n<ul>\n<li>\n<p>2.7.x (master): requires Java 1.8, major feature branch.</p>\n</li>\n<li>\n<p>2.6.x: requires Java 1.6, minor feature & bugfix branch, GA, productio [...]
"link": "/en-us/docs/developers/user-guide/faq_dev.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/README.html b/en-us/docs/user/README.html
index 1da4f32..5ca0ead 100644
--- a/en-us/docs/user/README.html
+++ b/en-us/docs/user/README.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/SUMMARY.html b/en-us/docs/user/SUMMARY.html
index 842be5a..c0cc11d 100644
--- a/en-us/docs/user/SUMMARY.html
+++ b/en-us/docs/user/SUMMARY.html
@@ -143,4 +143,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/benchmark-tool.html b/en-us/docs/user/benchmark-tool.html
index 53f7845..40f037e 100644
--- a/en-us/docs/user/benchmark-tool.html
+++ b/en-us/docs/user/benchmark-tool.html
@@ -69,4 +69,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/benchmark-tool.json b/en-us/docs/user/benchmark-tool.json
index faa04c0..dadb0a6 100644
--- a/en-us/docs/user/benchmark-tool.json
+++ b/en-us/docs/user/benchmark-tool.json
@@ -3,4 +3,4 @@
"__html": "<h1>Beanchmark testing tool installer</h1>\n<ul>\n<li>download: git clone <a href=\"https://github.com/apache/dubbo.git\">https://github.com/apache/dubbo.git</a></li>\n<li>compile benchmark: cd dubbo/dubbo-test/dubbo-test-benchmark; mvn clean install</li>\n<li>uncompress benchmark: dubbo/dubbo-test/dubbo-test-benchmark/target/dubbo-test-benchmark-2.6.2-SNAPSHOT.tar.gz</li>\n</ul>\n<p>Read ReadMe.txt (the contents are as follows, in the compressed package.)</p>\n<ul>\n<li>\n< [...]
"link": "/en-us/docs/user/benchmark-tool.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/best-practice.html b/en-us/docs/user/best-practice.html
index b8c552e..e4f9ecc 100644
--- a/en-us/docs/user/best-practice.html
+++ b/en-us/docs/user/best-practice.html
@@ -61,4 +61,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/capacity-plan.html b/en-us/docs/user/capacity-plan.html
index 29e90e9..4455ffa 100644
--- a/en-us/docs/user/capacity-plan.html
+++ b/en-us/docs/user/capacity-plan.html
@@ -45,4 +45,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/configuration/annotation.html b/en-us/docs/user/configuration/annotation.html
index ade792d..30f2d54 100644
--- a/en-us/docs/user/configuration/annotation.html
+++ b/en-us/docs/user/configuration/annotation.html
@@ -17,9 +17,9 @@
<h2>Provider Side</h2>
<h3><code>Service</code> annotation for exporting</h3>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.config.annotation.Service;
-
+
<span class="hljs-meta">@Service</span>(timeout = <span class="hljs-number">5000</span>)
-<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">AnnotateServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">AnnotateService</span> </span>{
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">AnnotateServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">AnnotateService</span> </span>{
<span class="hljs-comment">// ...</span>
}
</code></pre>
@@ -56,7 +56,7 @@
<span class="hljs-meta">@org</span>.apache.dubbo.config.annotation.Reference
<span class="hljs-keyword">public</span> AnnotateService annotateService;
-
+
<span class="hljs-comment">// ...</span>
}
@@ -97,7 +97,7 @@
</code></pre>
<h2>NOTES</h2>
<p>All annotations in 2.5.7 will be removed later, if you have used these annotations in your project, please upgrade to the latest version.</p>
-<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:annotation</span> <span class="hljs-attr">package</span>=<span class="hljs-string">"org.apache.dubbo.test.service"</span> /></span>
+<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:annotation</span> <span class="hljs-attr">package</span>=<span class="hljs-string">"org.apache.dubbo.test.service"</span> /></span>
</code></pre>
</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">Foundation</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">License</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">Events [...]
<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
@@ -116,4 +116,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/configuration/api.html b/en-us/docs/user/configuration/api.html
index 4e0e7c9..fbd866f 100644
--- a/en-us/docs/user/configuration/api.html
+++ b/en-us/docs/user/configuration/api.html
@@ -21,28 +21,28 @@
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.config.ServiceConfig;
<span class="hljs-keyword">import</span> com.xxx.XxxService;
<span class="hljs-keyword">import</span> com.xxx.XxxServiceImpl;
-
+
<span class="hljs-comment">// Implementation</span>
XxxService xxxService = <span class="hljs-keyword">new</span> XxxServiceImpl();
-
+
<span class="hljs-comment">// Application Info</span>
ApplicationConfig application = <span class="hljs-keyword">new</span> ApplicationConfig();
application.setName(<span class="hljs-string">"xxx"</span>);
-
+
<span class="hljs-comment">// Registry Info</span>
RegistryConfig registry = <span class="hljs-keyword">new</span> RegistryConfig();
registry.setAddress(<span class="hljs-string">"10.20.130.230:9090"</span>);
registry.setUsername(<span class="hljs-string">"aaa"</span>);
registry.setPassword(<span class="hljs-string">"bbb"</span>);
-
+
<span class="hljs-comment">// Protocol</span>
ProtocolConfig protocol = <span class="hljs-keyword">new</span> ProtocolConfig();
protocol.setName(<span class="hljs-string">"dubbo"</span>);
protocol.setPort(<span class="hljs-number">12345</span>);
protocol.setThreads(<span class="hljs-number">200</span>);
-
+
<span class="hljs-comment">// NOTES: ServiceConfig holds the serversocket instance and keeps connections to registry, please cache it for performance.</span>
-
+
<span class="hljs-comment">// Exporting</span>
ServiceConfig<XxxService> service = <span class="hljs-keyword">new</span> ServiceConfig<XxxService>(); <span class="hljs-comment">// In case of memory leak, please cache.</span>
service.setApplication(application);
@@ -51,7 +51,7 @@ service.setProtocol(protocol); <span class="hljs-comment">// Use setProtocols()
service.setInterface(XxxService.class);
service.setRef(xxxService);
service.setVersion(<span class="hljs-string">"1.0.0"</span>);
-
+
<span class="hljs-comment">// Local export and register</span>
service.export();
</code></pre>
@@ -61,26 +61,26 @@ service.export();
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.config.ConsumerConfig;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.config.ReferenceConfig;
<span class="hljs-keyword">import</span> com.xxx.XxxService;
-
+
<span class="hljs-comment">// Application Info</span>
ApplicationConfig application = <span class="hljs-keyword">new</span> ApplicationConfig();
application.setName(<span class="hljs-string">"yyy"</span>);
-
+
<span class="hljs-comment">// Registry Info</span>
RegistryConfig registry = <span class="hljs-keyword">new</span> RegistryConfig();
registry.setAddress(<span class="hljs-string">"10.20.130.230:9090"</span>);
registry.setUsername(<span class="hljs-string">"aaa"</span>);
registry.setPassword(<span class="hljs-string">"bbb"</span>);
-
+
<span class="hljs-comment">// NOTES: ReferenceConfig holds the connections to registry and providers, please cache it for performance.</span>
-
+
<span class="hljs-comment">// Refer remote service</span>
ReferenceConfig<XxxService> reference = <span class="hljs-keyword">new</span> ReferenceConfig<XxxService>(); <span class="hljs-comment">// In case of memory leak, please cache.</span>
reference.setApplication(application);
-reference.setRegistry(registry);
+reference.setRegistry(registry);
reference.setInterface(XxxService.class);
reference.setVersion(<span class="hljs-string">"1.0.0"</span>);
-
+
<span class="hljs-comment">// Use xxxService just like a local bean</span>
XxxService xxxService = reference.get(); <span class="hljs-comment">// NOTES: Please cache this proxy instance.</span>
</code></pre>
@@ -88,7 +88,7 @@ XxxService xxxService = reference.get(); <span class="hljs-comment">// NOTES: Pl
<p>Only care about the differences:</p>
<h3>Configuration of Method level</h3>
<pre><code class="language-java">...
-
+
<span class="hljs-comment">// Method level config</span>
List<MethodConfig> methods = <span class="hljs-keyword">new</span> ArrayList<MethodConfig>();
MethodConfig method = <span class="hljs-keyword">new</span> MethodConfig();
@@ -96,22 +96,22 @@ method.setName(<span class="hljs-string">"createXxx"</span>);
method.setTimeout(<span class="hljs-number">10000</span>);
method.setRetries(<span class="hljs-number">0</span>);
methods.add(method);
-
+
<span class="hljs-comment">// Referring</span>
ReferenceConfig<XxxService> reference = <span class="hljs-keyword">new</span> ReferenceConfig<XxxService>();
...
-reference.setMethods(methods);
-
+reference.setMethods(methods);
+
...
</code></pre>
<h3>Peer to Peer</h3>
<pre><code class="language-java">
...
-
-ReferenceConfig<XxxService> reference = <span class="hljs-keyword">new</span> ReferenceConfig<XxxService>();
+
+ReferenceConfig<XxxService> reference = <span class="hljs-keyword">new</span> ReferenceConfig<XxxService>();
<span class="hljs-comment">// If you know the address of the provider and want to bypass the registry, use `reference.setUrl()` to specify the provider directly. Refer [How to Invoke a specific provider](../demos/explicit-target.md) for details.</span>
-reference.setUrl(<span class="hljs-string">"dubbo://10.20.130.230:20880/com.xxx.XxxService"</span>);
-
+reference.setUrl(<span class="hljs-string">"dubbo://10.20.130.230:20880/com.xxx.XxxService"</span>);
+
...
</code></pre>
<hr class="footnotes-sep">
@@ -138,4 +138,4 @@ reference.setUrl(<span class="hljs-string">"dubbo://10.20.130.230:20880/com.xxx.
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/configuration/index.html b/en-us/docs/user/configuration/index.html
index de89844..adec275 100644
--- a/en-us/docs/user/configuration/index.html
+++ b/en-us/docs/user/configuration/index.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/configuration/properties.html b/en-us/docs/user/configuration/properties.html
index 026e539..c657dfc 100644
--- a/en-us/docs/user/configuration/properties.html
+++ b/en-us/docs/user/configuration/properties.html
@@ -64,4 +64,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/configuration/xml.html b/en-us/docs/user/configuration/xml.html
index 5b24ccd..786e8ed 100644
--- a/en-us/docs/user/configuration/xml.html
+++ b/en-us/docs/user/configuration/xml.html
@@ -19,12 +19,12 @@
<span class="hljs-tag"><<span class="hljs-name">beans</span> <span class="hljs-attr">xmlns</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans"</span>
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="hljs-attr">xmlns:dubbo</span>=<span class="hljs-string">"http://dubbo.apache.org/schema/dubbo"</span>
- <span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
- <span class="hljs-tag"><<span class="hljs-name">dubbo:application</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"hello-world-app"</span> /></span>
- <span class="hljs-tag"><<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"multicast://224.5.6.7:1234"</span> /></span>
- <span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dubbo"</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"20880"</span> /></span>
- <span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.demo.DemoService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"demoServiceLocal"</span> /></span>
- <span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"demoServiceRemote"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.demo.DemoService"</span> /></span>
+ <span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">dubbo:application</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"hello-world-app"</span> /></span>
+ <span class="hljs-tag"><<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"multicast://224.5.6.7:1234"</span> /></span>
+ <span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dubbo"</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"20880"</span> /></span>
+ <span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.demo.DemoService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"demoServiceLocal"</span> /></span>
+ <span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"demoServiceRemote"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.demo.DemoService"</span> /></span>
<span class="hljs-tag"></<span class="hljs-name">beans</span>></span>
</code></pre>
<p>All tags support custom parameters, so we can meet the special config requirements at different extension points, such as:</p>
@@ -37,8 +37,8 @@
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="hljs-attr">xmlns:dubbo</span>=<span class="hljs-string">"http://dubbo.apache.org/schema/dubbo"</span>
<span class="hljs-attr">xmlns:p</span>=<span class="hljs-string">"http://www.springframework.org/schema/p"</span>
- <span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
- <span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"jms"</span> <span class="hljs-attr">p:queue</span>=<span class="hljs-string">"your_queue"</span> /></span>
+ <span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"jms"</span> <span class="hljs-attr">p:queue</span>=<span class="hljs-string">"your_queue"</span> /></span>
<span class="hljs-tag"></<span class="hljs-name">beans</span>></span>
</code></pre>
<h2>The relations between configuration tags</h2>
@@ -138,4 +138,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/coveragence.html b/en-us/docs/user/coveragence.html
index 9c2bbb0..e9f5901 100644
--- a/en-us/docs/user/coveragence.html
+++ b/en-us/docs/user/coveragence.html
@@ -45,4 +45,4 @@ The test coverage is : <a href="https://codecov.io/gh/apache/dubbo"><img src="ht
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/coveragence.json b/en-us/docs/user/coveragence.json
index 5122ead..f59e04f 100644
--- a/en-us/docs/user/coveragence.json
+++ b/en-us/docs/user/coveragence.json
@@ -3,4 +3,4 @@
"__html": "<h1>Test coverage report</h1>\n<ul>\n<li>v2.0 Codecov report , Statistics since 2017-12-29\nThe test coverage is : <a href=\"https://codecov.io/gh/apache/dubbo\"><img src=\"https://codecov.io/gh/apache/dubbo/branch/master/graph/badge.svg\" alt=\"codecov\"></a> , we can get the report in <a href=\"https://codecov.io/gh/apache/dubbo\">https://codecov.io/gh/apache/dubbo</a></li>\n<li>v1.0 Based on version <code>2.0.12</code>,Statistics on 2012-02-03</li>\n</ul>\n<p><img sr [...]
"link": "/en-us/docs/user/coveragence.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/demos/accesslog.html b/en-us/docs/user/demos/accesslog.html
index cd17838..53de52b 100644
--- a/en-us/docs/user/demos/accesslog.html
+++ b/en-us/docs/user/demos/accesslog.html
@@ -73,4 +73,4 @@ Now I will show you how to config the access log.</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/async-call.html b/en-us/docs/user/demos/async-call.html
index 3d0d910..e407101 100644
--- a/en-us/docs/user/demos/async-call.html
+++ b/en-us/docs/user/demos/async-call.html
@@ -73,4 +73,4 @@ Bar bar = barFuture.get();
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/attachment.html b/en-us/docs/user/demos/attachment.html
index edd6d21..e8f108b 100644
--- a/en-us/docs/user/demos/attachment.html
+++ b/en-us/docs/user/demos/attachment.html
@@ -47,4 +47,4 @@ xxxService.xxx(); <span class="hljs-comment">// remote call</span>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/callback-parameter.html b/en-us/docs/user/demos/callback-parameter.html
index 9d444a6..a2944e3 100644
--- a/en-us/docs/user/demos/callback-parameter.html
+++ b/en-us/docs/user/demos/callback-parameter.html
@@ -120,4 +120,4 @@ callbackService.addListener(<span class="hljs-string">"foo.bar"</span>, <span cl
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/concurrency-control.html b/en-us/docs/user/demos/concurrency-control.html
index 21643d3..9558c66 100644
--- a/en-us/docs/user/demos/concurrency-control.html
+++ b/en-us/docs/user/demos/concurrency-control.html
@@ -75,4 +75,4 @@ Limit the <code>sayHello</code> method of <code>com.foo.BarService</code> to no
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/config-connections.html b/en-us/docs/user/demos/config-connections.html
index 71e50b2..1207389 100644
--- a/en-us/docs/user/demos/config-connections.html
+++ b/en-us/docs/user/demos/config-connections.html
@@ -49,4 +49,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/config-rule.html b/en-us/docs/user/demos/config-rule.html
index bf2ab59..014c9d7 100644
--- a/en-us/docs/user/demos/config-rule.html
+++ b/en-us/docs/user/demos/config-rule.html
@@ -70,4 +70,4 @@ registry.register(URL.valueOf(<span class="hljs-string">"override://0.0.0.0/com.
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/context.html b/en-us/docs/user/demos/context.html
index 7883fb9..434644f 100644
--- a/en-us/docs/user/demos/context.html
+++ b/en-us/docs/user/demos/context.html
@@ -59,4 +59,4 @@ yyyService.yyy();
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/delay-publish.html b/en-us/docs/user/demos/delay-publish.html
index 510f606..00c3979 100644
--- a/en-us/docs/user/demos/delay-publish.html
+++ b/en-us/docs/user/demos/delay-publish.html
@@ -64,4 +64,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/distributed-transaction.html b/en-us/docs/user/demos/distributed-transaction.html
index 83c75de..057a4c6 100644
--- a/en-us/docs/user/demos/distributed-transaction.html
+++ b/en-us/docs/user/demos/distributed-transaction.html
@@ -33,4 +33,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/dump.html b/en-us/docs/user/demos/dump.html
index b168298..abdf070 100644
--- a/en-us/docs/user/demos/dump.html
+++ b/en-us/docs/user/demos/dump.html
@@ -44,4 +44,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/echo-service.html b/en-us/docs/user/demos/echo-service.html
index 895a64d..728813c 100644
--- a/en-us/docs/user/demos/echo-service.html
+++ b/en-us/docs/user/demos/echo-service.html
@@ -46,4 +46,4 @@ String status = echoService.$echo(<span class="hljs-string">"OK"</span>);
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/events-notify.html b/en-us/docs/user/demos/events-notify.html
index 4c71a7f..ea28c6a 100644
--- a/en-us/docs/user/demos/events-notify.html
+++ b/en-us/docs/user/demos/events-notify.html
@@ -101,4 +101,4 @@ Assert.assertEquals(requestId, notify.ret.get(requestId).getId());
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/explicit-target.html b/en-us/docs/user/demos/explicit-target.html
index 081b7da..503224b 100644
--- a/en-us/docs/user/demos/explicit-target.html
+++ b/en-us/docs/user/demos/explicit-target.html
@@ -48,4 +48,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/fault-tolerent-strategy.html b/en-us/docs/user/demos/fault-tolerent-strategy.html
index 8837b14..560297f 100644
--- a/en-us/docs/user/demos/fault-tolerent-strategy.html
+++ b/en-us/docs/user/demos/fault-tolerent-strategy.html
@@ -72,4 +72,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/generic-reference.html b/en-us/docs/user/demos/generic-reference.html
index 7049d9c..614be2f 100644
--- a/en-us/docs/user/demos/generic-reference.html
+++ b/en-us/docs/user/demos/generic-reference.html
@@ -30,10 +30,10 @@ Object result = barService.$invoke(<span class="hljs-string">"sayHello"</span>,
<span class="hljs-comment">// The instance is very heavy, which encapsulates all the registration center and service provider connection, please cache</span>
ReferenceConfig<GenericService> reference = <span class="hljs-keyword">new</span> ReferenceConfig<GenericService>();
<span class="hljs-comment">// weak type service interface name</span>
-reference.setInterface(<span class="hljs-string">"com.xxx.XxxService"</span>);
+reference.setInterface(<span class="hljs-string">"com.xxx.XxxService"</span>);
reference.setVersion(<span class="hljs-string">"1.0.0"</span>);
<span class="hljs-comment">// declared as generic service</span>
-reference.setGeneric(<span class="hljs-keyword">true</span>);
+reference.setGeneric(<span class="hljs-keyword">true</span>);
<span class="hljs-comment">// service stub type is also the org.apache.dubbo.rpc.service.GenericService</span>
GenericService genericService = reference.get();
@@ -105,4 +105,4 @@ map.put(<span class="hljs-string">"password"</span>, <span class="hljs-string">"
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/generic-service.html b/en-us/docs/user/demos/generic-service.html
index 145b821..83ad954 100644
--- a/en-us/docs/user/demos/generic-service.html
+++ b/en-us/docs/user/demos/generic-service.html
@@ -38,7 +38,7 @@ GenericService xxxService = <span class="hljs-keyword">new</span> XxxGenericServ
<span class="hljs-comment">// The instance is very heavy, which encapsulates all the registration center and service provider connection, please cache</span>
ServiceConfig<GenericService> service = <span class="hljs-keyword">new</span> ServiceConfig<GenericService>();
<span class="hljs-comment">// weak type service interface name</span>
-service.setInterface(<span class="hljs-string">"com.xxx.XxxService"</span>);
+service.setInterface(<span class="hljs-string">"com.xxx.XxxService"</span>);
service.setVersion(<span class="hljs-string">"1.0.0"</span>);
<span class="hljs-comment">// point to a generic serivce instance</span>
service.setRef(xxxService);
@@ -63,4 +63,4 @@ service.export();
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/graceful-shutdown.html b/en-us/docs/user/demos/graceful-shutdown.html
index 0f0bcfe..2bf5a93 100644
--- a/en-us/docs/user/demos/graceful-shutdown.html
+++ b/en-us/docs/user/demos/graceful-shutdown.html
@@ -50,4 +50,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/group-merger.html b/en-us/docs/user/demos/group-merger.html
index 86dcf4a..8c5f28b 100644
--- a/en-us/docs/user/demos/group-merger.html
+++ b/en-us/docs/user/demos/group-merger.html
@@ -68,4 +68,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/group-merger.json b/en-us/docs/user/demos/group-merger.json
index 488625f..60d40a8 100644
--- a/en-us/docs/user/demos/group-merger.json
+++ b/en-us/docs/user/demos/group-merger.json
@@ -3,4 +3,4 @@
"__html": "<h1>Group Merger</h1>\n<p>According to the group to invoke server and return the merge result <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>, such as the menu service, the same interface, but there are a variety of implementations, using group distinction, consumers call each group and get the results, the merger can merge the resules, so that you can achieve aggregation Menu Item.</p>\n<p>Related code can refer to <a href=\"https://github.com/apach [...]
"link": "/en-us/docs/user/demos/group-merger.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/demos/hostname-binding.html b/en-us/docs/user/demos/hostname-binding.html
index e0ff9f1..3316b13 100644
--- a/en-us/docs/user/demos/hostname-binding.html
+++ b/en-us/docs/user/demos/hostname-binding.html
@@ -108,4 +108,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/index.html b/en-us/docs/user/demos/index.html
index 0b0c1df..7e29e7c 100644
--- a/en-us/docs/user/demos/index.html
+++ b/en-us/docs/user/demos/index.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/introduction.html b/en-us/docs/user/demos/introduction.html
index 8083938..1ada2b0 100644
--- a/en-us/docs/user/demos/introduction.html
+++ b/en-us/docs/user/demos/introduction.html
@@ -33,4 +33,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/lazy-connect.html b/en-us/docs/user/demos/lazy-connect.html
index d67dbb7..e9b5e42 100644
--- a/en-us/docs/user/demos/lazy-connect.html
+++ b/en-us/docs/user/demos/lazy-connect.html
@@ -40,4 +40,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/loadbalance.html b/en-us/docs/user/demos/loadbalance.html
index 5a437a6..420f8a7 100644
--- a/en-us/docs/user/demos/loadbalance.html
+++ b/en-us/docs/user/demos/loadbalance.html
@@ -74,4 +74,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/local-call.html b/en-us/docs/user/demos/local-call.html
index fbfcdbe..ad91b02 100644
--- a/en-us/docs/user/demos/local-call.html
+++ b/en-us/docs/user/demos/local-call.html
@@ -54,4 +54,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/local-mock.html b/en-us/docs/user/demos/local-mock.html
index f3b5041..74bcd91 100644
--- a/en-us/docs/user/demos/local-mock.html
+++ b/en-us/docs/user/demos/local-mock.html
@@ -98,4 +98,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/local-stub.html b/en-us/docs/user/demos/local-stub.html
index 85d0adc..9505178 100644
--- a/en-us/docs/user/demos/local-stub.html
+++ b/en-us/docs/user/demos/local-stub.html
@@ -69,4 +69,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/logger-strategy.html b/en-us/docs/user/demos/logger-strategy.html
index 356f14b..38149de 100644
--- a/en-us/docs/user/demos/logger-strategy.html
+++ b/en-us/docs/user/demos/logger-strategy.html
@@ -55,4 +55,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/multi-protocols.html b/en-us/docs/user/demos/multi-protocols.html
index 99e2765..aaff9d4 100644
--- a/en-us/docs/user/demos/multi-protocols.html
+++ b/en-us/docs/user/demos/multi-protocols.html
@@ -64,4 +64,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/multi-registry.html b/en-us/docs/user/demos/multi-registry.html
index e4eecda..4af3bd6 100644
--- a/en-us/docs/user/demos/multi-registry.html
+++ b/en-us/docs/user/demos/multi-registry.html
@@ -100,4 +100,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/multi-versions.html b/en-us/docs/user/demos/multi-versions.html
index 13002e5..013a26e 100644
--- a/en-us/docs/user/demos/multi-versions.html
+++ b/en-us/docs/user/demos/multi-versions.html
@@ -59,4 +59,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/netty4.html b/en-us/docs/user/demos/netty4.html
index 7ffd7de..cdbd911 100644
--- a/en-us/docs/user/demos/netty4.html
+++ b/en-us/docs/user/demos/netty4.html
@@ -61,4 +61,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/parameter-validation.html b/en-us/docs/user/demos/parameter-validation.html
index 6bf3cba..0a9ebd1 100644
--- a/en-us/docs/user/demos/parameter-validation.html
+++ b/en-us/docs/user/demos/parameter-validation.html
@@ -30,7 +30,7 @@
<h3>Example of Parameter Annotation</h3>
<pre><code class="language-java"><span class="hljs-keyword">import</span> java.io.Serializable;
<span class="hljs-keyword">import</span> java.util.Date;
-
+
<span class="hljs-keyword">import</span> javax.validation.constraints.Future;
<span class="hljs-keyword">import</span> javax.validation.constraints.Max;
<span class="hljs-keyword">import</span> javax.validation.constraints.Min;
@@ -38,64 +38,64 @@
<span class="hljs-keyword">import</span> javax.validation.constraints.Past;
<span class="hljs-keyword">import</span> javax.validation.constraints.Pattern;
<span class="hljs-keyword">import</span> javax.validation.constraints.Size;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ValidationParameter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> <span class="hljs-keyword">long</span> serialVersionUID = <span class="hljs-number">7158911668568000392L</span>;
-
+
<span class="hljs-meta">@NotNull</span> <span class="hljs-comment">// Required </span>
<span class="hljs-meta">@Size</span>(min = <span class="hljs-number">1</span>, max = <span class="hljs-number">20</span>) <span class="hljs-comment">// range</span>
<span class="hljs-keyword">private</span> String name;
-
+
<span class="hljs-meta">@NotNull</span>(groups = ValidationService.Save.class) <span class="hljs-comment">// It is not allowed to be blank when saving. When it is updated, it is allowed to be blank, indicating that the field is not updated </span>
<span class="hljs-meta">@Pattern</span>(regexp = <span class="hljs-string">"^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$"</span>)
<span class="hljs-keyword">private</span> String email;
-
+
<span class="hljs-meta">@Min</span>(<span class="hljs-number">18</span>) <span class="hljs-comment">// min value</span>
<span class="hljs-meta">@Max</span>(<span class="hljs-number">100</span>) <span class="hljs-comment">// max value</span>
<span class="hljs-keyword">private</span> <span class="hljs-keyword">int</span> age;
-
+
<span class="hljs-meta">@Past</span> <span class="hljs-comment">// Must be a past time</span>
<span class="hljs-keyword">private</span> Date loginDate;
-
+
<span class="hljs-meta">@Future</span> <span class="hljs-comment">// Must be a future time</span>
<span class="hljs-keyword">private</span> Date expiryDate;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getName</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> name;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setName</span><span class="hljs-params">(String name)</span> </span>{
<span class="hljs-keyword">this</span>.name = name;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">getEmail</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> email;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setEmail</span><span class="hljs-params">(String email)</span> </span>{
<span class="hljs-keyword">this</span>.email = email;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getAge</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> age;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setAge</span><span class="hljs-params">(<span class="hljs-keyword">int</span> age)</span> </span>{
<span class="hljs-keyword">this</span>.age = age;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Date <span class="hljs-title">getLoginDate</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> loginDate;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setLoginDate</span><span class="hljs-params">(Date loginDate)</span> </span>{
<span class="hljs-keyword">this</span>.loginDate = loginDate;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Date <span class="hljs-title">getExpiryDate</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> expiryDate;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setExpiryDate</span><span class="hljs-params">(Date expiryDate)</span> </span>{
<span class="hljs-keyword">this</span>.expiryDate = expiryDate;
}
@@ -110,20 +110,20 @@
</code></pre>
<h3>Example of Cascading Validation</h3>
<pre><code class="language-java"><span class="hljs-keyword">import</span> javax.validation.GroupSequence;
-
-<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">ValidationService</span> </span>{
+
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">ValidationService</span> </span>{
<span class="hljs-meta">@GroupSequence</span>(Update.class) <span class="hljs-comment">// validate the Update group rules at the same time</span>
<span class="hljs-meta">@interface</span> Save{}
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">save</span><span class="hljs-params">(ValidationParameter parameter)</span></span>;
-
- <span class="hljs-meta">@interface</span> Update{}
+
+ <span class="hljs-meta">@interface</span> Update{}
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">update</span><span class="hljs-params">(ValidationParameter parameter)</span></span>;
}
</code></pre>
<h3>Example of parameter validation</h3>
<pre><code class="language-java"><span class="hljs-keyword">import</span> javax.validation.constraints.Min;
<span class="hljs-keyword">import</span> javax.validation.constraints.NotNull;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">ValidationService</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">save</span><span class="hljs-params">(@NotNull ValidationParameter parameter)</span></span>; <span class="hljs-comment">// Param must not be null</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">delete</span><span class="hljs-params">(@Min(<span class="hljs-number">1</span>)</span> <span class="hljs-keyword">int</span> id)</span>; <span class="hljs-comment">// validate the range</span>
@@ -139,14 +139,14 @@
<h2>Validate Exception</h2>
<pre><code class="language-java"><span class="hljs-keyword">import</span> javax.validation.ConstraintViolationException;
<span class="hljs-keyword">import</span> javax.validation.ConstraintViolationException;
-
+
<span class="hljs-keyword">import</span> org.springframework.context.support.ClassPathXmlApplicationContext;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.examples.validation.api.ValidationParameter;
<span class="hljs-keyword">import</span> org.apache.dubbo.examples.validation.api.ValidationService;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
-<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ValidationConsumer</span> </span>{
+
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ValidationConsumer</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception </span>{
String config = ValidationConsumer.class.getPackage().getName().replace(<span class="hljs-string">'.'</span>, <span class="hljs-string">'/'</span>) + <span class="hljs-string">"/validation-consumer.xml"</span>;
ClassPathXmlApplicationContext context = <span class="hljs-keyword">new</span> ClassPathXmlApplicationContext(config);
@@ -162,7 +162,7 @@
Set<ConstraintViolation<?>> violations = ve.getConstraintViolations(); <span class="hljs-comment">// You can get the collection of validation error details</span>
System.out.println(violations);
}
- }
+ }
}
</code></pre>
<hr class="footnotes-sep">
@@ -191,4 +191,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/parameter-validation.json b/en-us/docs/user/demos/parameter-validation.json
index 5a07462..a6be139 100644
--- a/en-us/docs/user/demos/parameter-validation.json
+++ b/en-us/docs/user/demos/parameter-validation.json
@@ -3,4 +3,4 @@
"__html": "<h1>Parameter Validation</h1>\n<p>The parameter validation <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> is based on [JSR303] (<a href=\"https://jcp.org/en/jsr/detail?id=303\">https://jcp.org/en/jsr/detail?id=303</a>). The user simply add the validation annotation of the JSR303 and declares the filter for validation <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>.</p>\n<h2>Maven Dependency</h2>\n<pre><code class=\"language- [...]
"link": "/en-us/docs/user/demos/parameter-validation.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/demos/preflight-check.html b/en-us/docs/user/demos/preflight-check.html
index b584047..e5e712f 100644
--- a/en-us/docs/user/demos/preflight-check.html
+++ b/en-us/docs/user/demos/preflight-check.html
@@ -61,4 +61,4 @@ java -Ddubbo.registry.check = <span class="hljs-literal">false</span>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/reference-config-cache.html b/en-us/docs/user/demos/reference-config-cache.html
index c58db2f..1e17dfe 100644
--- a/en-us/docs/user/demos/reference-config-cache.html
+++ b/en-us/docs/user/demos/reference-config-cache.html
@@ -53,4 +53,4 @@ ReferenceConfigCache cache = ReferenceConfigCache.getCache(keyGenerator );
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/registry-only.html b/en-us/docs/user/demos/registry-only.html
index 1c898ca..b7fd13f 100644
--- a/en-us/docs/user/demos/registry-only.html
+++ b/en-us/docs/user/demos/registry-only.html
@@ -41,4 +41,4 @@ At this time, the service provider registers service to another registrar, but t
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/result-cache.html b/en-us/docs/user/demos/result-cache.html
index 5ff67e5..be19cbf 100644
--- a/en-us/docs/user/demos/result-cache.html
+++ b/en-us/docs/user/demos/result-cache.html
@@ -55,4 +55,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/result-cache.json b/en-us/docs/user/demos/result-cache.json
index 7ff7559..0a1891f 100644
--- a/en-us/docs/user/demos/result-cache.json
+++ b/en-us/docs/user/demos/result-cache.json
@@ -3,4 +3,4 @@
"__html": "<h1>Cache Result</h1>\n<p>Cache Result <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup> is used to speed up access to popular data. Dubbo provides declarative caching to reduce the user work of adding cache <sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">[2]</a></sup>。</p>\n<h2>Cache Type</h2>\n<ul>\n<li><code>lru</code> Delete excess cache Based on the principle of least recently used. The hottest data is cached.</li>\n<li><code>threadloc [...]
"link": "/en-us/docs/user/demos/result-cache.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/demos/routing-rule.html b/en-us/docs/user/demos/routing-rule.html
index 26feb48..346262b 100644
--- a/en-us/docs/user/demos/routing-rule.html
+++ b/en-us/docs/user/demos/routing-rule.html
@@ -204,4 +204,4 @@ application != bops => host = 172.22.3.94,172.22.3.95,172.22.3.96
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/serialization.html b/en-us/docs/user/demos/serialization.html
index b0b90de..a5aa1ac 100644
--- a/en-us/docs/user/demos/serialization.html
+++ b/en-us/docs/user/demos/serialization.html
@@ -89,4 +89,4 @@ double[]
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/service-container.html b/en-us/docs/user/demos/service-container.html
index 6445891..200a67e 100644
--- a/en-us/docs/user/demos/service-container.html
+++ b/en-us/docs/user/demos/service-container.html
@@ -77,4 +77,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/service-downgrade.html b/en-us/docs/user/demos/service-downgrade.html
index 9503b8c..632a515 100644
--- a/en-us/docs/user/demos/service-downgrade.html
+++ b/en-us/docs/user/demos/service-downgrade.html
@@ -44,4 +44,4 @@ registry.register(URL.valueOf(<span class="hljs-string">"override://0.0.0.0/com.
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/service-group.html b/en-us/docs/user/demos/service-group.html
index fdc4203..5d1f660 100644
--- a/en-us/docs/user/demos/service-group.html
+++ b/en-us/docs/user/demos/service-group.html
@@ -49,4 +49,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/static-service.html b/en-us/docs/user/demos/static-service.html
index 1b3713a..d3f23f8 100644
--- a/en-us/docs/user/demos/static-service.html
+++ b/en-us/docs/user/demos/static-service.html
@@ -44,4 +44,4 @@ registry.register(URL.valueOf(<span class="hljs-string">"memcached://10.20.153.1
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/stickiness.html b/en-us/docs/user/demos/stickiness.html
index 607783d..8c6c87e 100644
--- a/en-us/docs/user/demos/stickiness.html
+++ b/en-us/docs/user/demos/stickiness.html
@@ -39,4 +39,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/subscribe-only.html b/en-us/docs/user/demos/subscribe-only.html
index f8e2bd5..c5b8215 100644
--- a/en-us/docs/user/demos/subscribe-only.html
+++ b/en-us/docs/user/demos/subscribe-only.html
@@ -39,4 +39,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/thread-model.html b/en-us/docs/user/demos/thread-model.html
index 9c49272..cc3322d 100644
--- a/en-us/docs/user/demos/thread-model.html
+++ b/en-us/docs/user/demos/thread-model.html
@@ -54,4 +54,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/demos/token-authorization.html b/en-us/docs/user/demos/token-authorization.html
index 1276867..e5dc903 100644
--- a/en-us/docs/user/demos/token-authorization.html
+++ b/en-us/docs/user/demos/token-authorization.html
@@ -56,4 +56,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/dependencies.html b/en-us/docs/user/dependencies.html
index 5a69b5e..b690cda 100644
--- a/en-us/docs/user/dependencies.html
+++ b/en-us/docs/user/dependencies.html
@@ -91,4 +91,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/maturity.html b/en-us/docs/user/maturity.html
index 3631ef0..cdae1ea 100644
--- a/en-us/docs/user/maturity.html
+++ b/en-us/docs/user/maturity.html
@@ -580,4 +580,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/perf-test.html b/en-us/docs/user/perf-test.html
index 5a423ec..7b8153a 100644
--- a/en-us/docs/user/perf-test.html
+++ b/en-us/docs/user/perf-test.html
@@ -364,4 +364,4 @@ On the basis of the stability scenario, the providers and consumers are arranged
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/preface/architecture.html b/en-us/docs/user/preface/architecture.html
index f2e9916..99a45e9 100644
--- a/en-us/docs/user/preface/architecture.html
+++ b/en-us/docs/user/preface/architecture.html
@@ -135,4 +135,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/preface/background.html b/en-us/docs/user/preface/background.html
index faaae9a..970763c 100644
--- a/en-us/docs/user/preface/background.html
+++ b/en-us/docs/user/preface/background.html
@@ -40,4 +40,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/preface/index.html b/en-us/docs/user/preface/index.html
index 51aaae3..247daa0 100644
--- a/en-us/docs/user/preface/index.html
+++ b/en-us/docs/user/preface/index.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/preface/requirements.html b/en-us/docs/user/preface/requirements.html
index 7b2b1e3..cb0a1d8 100644
--- a/en-us/docs/user/preface/requirements.html
+++ b/en-us/docs/user/preface/requirements.html
@@ -36,4 +36,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/preface/usage.html b/en-us/docs/user/preface/usage.html
index 13216fe..d4adb11 100644
--- a/en-us/docs/user/preface/usage.html
+++ b/en-us/docs/user/preface/usage.html
@@ -28,15 +28,15 @@
</ul>
<p>remote-provider.xml:</p>
<pre><code class="language-xml"><span class="hljs-comment"><!-- define remote service bean the same way as local service bean --></span>
-<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">“xxxService”</span> <span class="hljs-attr">class</span>=<span class="hljs-string">“com.xxx.XxxServiceImpl”</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">“xxxService”</span> <span class="hljs-attr">class</span>=<span class="hljs-string">“com.xxx.XxxServiceImpl”</span> /></span>
<span class="hljs-comment"><!-- expose the remote service --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">“com.xxx.XxxService”</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">“xxxService”</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">“com.xxx.XxxService”</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">“xxxService”</span> /></span>
</code></pre>
<p>remote-consumer.xml:</p>
<pre><code class="language-xml"><span class="hljs-comment"><!-- reference the remote service --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">id</span>=<span class="hljs-string">“xxxService”</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">“com.xxx.XxxService”</span> /></span>
<span class="hljs-comment"><!-- use remote service the same say as local service --></span>
-<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">“xxxAction”</span> <span class="hljs-attr">class</span>=<span class="hljs-string">“com.xxx.XxxAction”</span>></span>
+<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">“xxxAction”</span> <span class="hljs-attr">class</span>=<span class="hljs-string">“com.xxx.XxxAction”</span>></span>
<span class="hljs-tag"><<span class="hljs-name">property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">“xxxService”</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">“xxxService”</span> /></span>
<span class="hljs-tag"></<span class="hljs-name">bean</span>></span>
</code></pre>
@@ -57,4 +57,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/quick-start.html b/en-us/docs/user/quick-start.html
index 2191ea6..71b5f8e 100644
--- a/en-us/docs/user/quick-start.html
+++ b/en-us/docs/user/quick-start.html
@@ -154,7 +154,7 @@ log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy hh:mm:ss:sss z}] %t
<p>Consumer.java <sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.springframework.context.support.ClassPathXmlApplicationContext;
<span class="hljs-keyword">import</span> org.apache.dubbo.demo.DemoService;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Consumer</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> <span class="hljs-keyword">throws</span> Exception </span>{
ClassPathXmlApplicationContext context = <span class="hljs-keyword">new</span> ClassPathXmlApplicationContext(<span class="hljs-keyword">new</span> String[] {<span class="hljs-string">"META-INF/spring/dubbo-demo-consumer.xml"</span>});
@@ -229,4 +229,4 @@ log4j.appender.stdout.layout.ConversionPattern=[%d{dd/MM/yy hh:mm:ss:sss z}] %t
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/recommend.html b/en-us/docs/user/recommend.html
index 3500be8..a1f0cf5 100644
--- a/en-us/docs/user/recommend.html
+++ b/en-us/docs/user/recommend.html
@@ -24,7 +24,7 @@
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"com.alibaba.hello.api.HelloService"</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"1.0.0"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"helloService"</span>
<span class="hljs-attr">timeout</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">retry</span>=<span class="hljs-string">"2"</span> <span class="hljs-attr">loadbalance</span>=<span class="hljs-string">"random"</span> <span class="hljs-attr">actives</span>=<span class="hljs-string">"0"</span>
/></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"com.alibaba.hello.api.WorldService"</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"1.0.0"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"helloService"</span>
<span class="hljs-attr">timeout</span>=<span class="hljs-string">"300"</span> <span class="hljs-attr">retry</span>=<span class="hljs-string">"2"</span> <span class="hljs-attr">loadbalance</span>=<span class="hljs-string">"random"</span> <span class="hljs-attr">actives</span>=<span class="hljs-string">"0"</span> ></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"findAllPerson"</span> <span class="hljs-attr">timeout</span>=<span class="hljs-string">"10000"</span> <span class="hljs-attr">retries</span>=<span class="hljs-string">"9"</span> <span class="hljs-attr">loadbalance</span>=<span class="hljs-string">"leastactive"</span> <span class="hljs-attr">actives</span>=<span class="hljs-string">"5"</span> /></span>
@@ -40,7 +40,7 @@ Configurated in <code>dubbo:method</code>(method level configuration) , then th
</ol>
<p>Detailed configuration instructions see:<a href="./references/xml/introduction.md">Dubbo configuration introduction</a></p>
<h2>Configuring reasonable provider end properties on provider</h2>
-<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">threads</span>=<span class="hljs-string">"200"</span> /></span>
+<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">threads</span>=<span class="hljs-string">"200"</span> /></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"com.alibaba.hello.api.HelloService"</span> <span class="hljs-attr">version</span>=<span class="hljs-string">"1.0.0"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"helloService"</span>
<span class="hljs-attr">executes</span>=<span class="hljs-string">"200"</span> ></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"findAllPerson"</span> <span class="hljs-attr">executes</span>=<span class="hljs-string">"50"</span> /></span>
@@ -168,4 +168,4 @@ Configurated in <code>dubbo:method</code>(method level configuration) , then th
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/api.html b/en-us/docs/user/references/api.html
index ec58532..24ca7e3 100644
--- a/en-us/docs/user/references/api.html
+++ b/en-us/docs/user/references/api.html
@@ -74,4 +74,4 @@ org.apache.dubbo.rpc.service.GenericException
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/maven.html b/en-us/docs/user/references/maven.html
index 9b5a863..6bc039c 100644
--- a/en-us/docs/user/references/maven.html
+++ b/en-us/docs/user/references/maven.html
@@ -15,11 +15,11 @@
<div id="root"><div class="documentation-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/en-us/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">中</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a [...]
<h2>Start a simple registry server</h2>
<p>Start a simple registry server listening on port 9099 <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
-<pre><code class="language-sh">mvn dubbo:registry -Dport=9099
+<pre><code class="language-sh">mvn dubbo:registry -Dport=9099
</code></pre>
<h2>Generate a service provider demo application</h2>
<p>Generate a service provider with the specified interface and version:</p>
-<pre><code class="language-sh">mvn dubbo:create -Dapplication=xxx -Dpackage=com.alibaba.xxx -Dservice=XxxService,YyyService -Dversion=1.0.0
+<pre><code class="language-sh">mvn dubbo:create -Dapplication=xxx -Dpackage=com.alibaba.xxx -Dservice=XxxService,YyyService -Dversion=1.0.0
</code></pre>
<hr class="footnotes-sep">
<section class="footnotes">
@@ -45,4 +45,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/dubbo.html b/en-us/docs/user/references/protocol/dubbo.html
index c2dbf80..4f460e7 100644
--- a/en-us/docs/user/references/protocol/dubbo.html
+++ b/en-us/docs/user/references/protocol/dubbo.html
@@ -127,4 +127,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/hessian.html b/en-us/docs/user/references/protocol/hessian.html
index 5ffdbce..0067375 100644
--- a/en-us/docs/user/references/protocol/hessian.html
+++ b/en-us/docs/user/references/protocol/hessian.html
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/http.html b/en-us/docs/user/references/protocol/http.html
index 80b2a61..903be74 100644
--- a/en-us/docs/user/references/protocol/http.html
+++ b/en-us/docs/user/references/protocol/http.html
@@ -71,4 +71,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/introduction.html b/en-us/docs/user/references/protocol/introduction.html
index b9c04b7..bbdd09d 100644
--- a/en-us/docs/user/references/protocol/introduction.html
+++ b/en-us/docs/user/references/protocol/introduction.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/memcached.html b/en-us/docs/user/references/protocol/memcached.html
index 9c68b14..131767a 100644
--- a/en-us/docs/user/references/protocol/memcached.html
+++ b/en-us/docs/user/references/protocol/memcached.html
@@ -50,4 +50,4 @@ registry.register(URL.valueOf(<span class="hljs-string">"memcached://10.20.153.1
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/redis.html b/en-us/docs/user/references/protocol/redis.html
index dbd991d..c82d823 100644
--- a/en-us/docs/user/references/protocol/redis.html
+++ b/en-us/docs/user/references/protocol/redis.html
@@ -50,4 +50,4 @@ registry.register(URL.valueOf(<span class="hljs-string">"redis://10.20.153.11/co
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/rest.html b/en-us/docs/user/references/protocol/rest.html
index 0fdb5d7..712b74c 100644
--- a/en-us/docs/user/references/protocol/rest.html
+++ b/en-us/docs/user/references/protocol/rest.html
@@ -21,14 +21,14 @@
</code></pre>
<p>而任何客户端都可以将包含用户信息的JSON字符串POST到以上URL来完成用户注册。</p>
<p>首先,开发服务的接口:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserService</span> </span>{
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserService</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">registerUser</span><span class="hljs-params">(User user)</span></span>;
}
</code></pre>
<p>然后,开发服务的实现:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@POST</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"register"</span>)
<span class="hljs-meta">@Consumes</span>({MediaType.APPLICATION_JSON})
@@ -80,7 +80,7 @@ http://localhost:8080/users/1003
<p>在Dubbo中开发REST服务主要都是通过JAX-RS的annotation来完成配置的,在上面的示例中,我们都是将annotation放在服务的实现类中。但其实,我们完全也可以将annotation放到服务的接口上,这两种方式是完全等价的,例如:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@GET</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"{id : \\d+}"</span>)
<span class="hljs-meta">@Produces</span>({MediaType.APPLICATION_JSON})
@@ -139,20 +139,20 @@ http://localhost:8080/users/1003
<p>由于primitive类型不被JAXB序列化支持,所以添加一个wrapper对象:</p>
<pre><code class="language-java"><span class="hljs-meta">@XmlRootElement</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RegistrationResult</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{
-
+
<span class="hljs-keyword">private</span> Long id;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">RegistrationResult</span><span class="hljs-params">()</span> </span>{
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">RegistrationResult</span><span class="hljs-params">(Long id)</span> </span>{
<span class="hljs-keyword">this</span>.id = id;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Long <span class="hljs-title">getId</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> id;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setId</span><span class="hljs-params">(Long id)</span> </span>{
<span class="hljs-keyword">this</span>.id = id;
}
@@ -165,7 +165,7 @@ http://localhost:8080/users/1003
<pre><code class="language-javascript">{<span class="hljs-string">"id"</span>: <span class="hljs-number">1001</span>}
</code></pre>
<p>如果不加wrapper,JSON返回值将直接是</p>
-<pre><code>1001
+<pre><code>1001
</code></pre>
<p>而在XML中,加wrapper后返回值将是:</p>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">registrationResult</span>></span>
@@ -180,14 +180,14 @@ http://localhost:8080/users/1003
<pre><code class="language-java"><span class="hljs-meta">@XmlRootElement</span>
<span class="hljs-meta">@XmlAccessorType</span>(XmlAccessType.FIELD)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{
-
- <span class="hljs-meta">@XmlElement</span>(name=<span class="hljs-string">"username"</span>)
- <span class="hljs-keyword">private</span> String name;
+
+ <span class="hljs-meta">@XmlElement</span>(name=<span class="hljs-string">"username"</span>)
+ <span class="hljs-keyword">private</span> String name;
}
</code></pre>
<p>定制对象属性映射到JSON字段的名字:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{
-
+
<span class="hljs-meta">@JsonProperty</span>(<span class="hljs-string">"username"</span>)
<span class="hljs-keyword">private</span> String name;
}
@@ -217,21 +217,21 @@ http://localhost:8080/users/1003
<span class="hljs-tag"><<span class="hljs-name">param-name</span>></span>contextConfigLocation<span class="hljs-tag"></<span class="hljs-name">param-name</span>></span>
<span class="hljs-tag"><<span class="hljs-name">param-value</span>></span>/WEB-INF/classes/META-INF/spring/dubbo-demo-provider.xml<span class="hljs-tag"></<span class="hljs-name">param-value</span>></span>
<span class="hljs-tag"></<span class="hljs-name">context-param</span>></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">listener</span>></span>
<span class="hljs-tag"><<span class="hljs-name">listener-class</span>></span>org.apache.dubbo.remoting.http.servlet.BootstrapListener<span class="hljs-tag"></<span class="hljs-name">listener-class</span>></span>
<span class="hljs-tag"></<span class="hljs-name">listener</span>></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">listener</span>></span>
<span class="hljs-tag"><<span class="hljs-name">listener-class</span>></span>org.springframework.web.context.ContextLoaderListener<span class="hljs-tag"></<span class="hljs-name">listener-class</span>></span>
<span class="hljs-tag"></<span class="hljs-name">listener</span>></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">servlet</span>></span>
<span class="hljs-tag"><<span class="hljs-name">servlet-name</span>></span>dispatcher<span class="hljs-tag"></<span class="hljs-name">servlet-name</span>></span>
<span class="hljs-tag"><<span class="hljs-name">servlet-class</span>></span>org.apache.dubbo.remoting.http.servlet.DispatcherServlet<span class="hljs-tag"></<span class="hljs-name">servlet-class</span>></span>
<span class="hljs-tag"><<span class="hljs-name">load-on-startup</span>></span>1<span class="hljs-tag"></<span class="hljs-name">load-on-startup</span>></span>
<span class="hljs-tag"></<span class="hljs-name">servlet</span>></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">servlet-mapping</span>></span>
<span class="hljs-tag"><<span class="hljs-name">servlet-name</span>></span>dispatcher<span class="hljs-tag"></<span class="hljs-name">servlet-name</span>></span>
<span class="hljs-tag"><<span class="hljs-name">url-pattern</span>></span>/*<span class="hljs-tag"></<span class="hljs-name">url-pattern</span>></span>
@@ -249,7 +249,7 @@ http://localhost:8080/users/1003
<p>第一种方式,用JAX-RS标准的@Context annotation:</p>
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> User <span class="hljs-title">getUser</span><span class="hljs-params">(@PathParam(<span class="hljs-string">"id"</span>)</span> Long id, @Context HttpServletRequest request) </span>{
System.out.println(<span class="hljs-string">"Client address is "</span> + request.getRemoteAddr());
-}
+}
</code></pre>
<p>用Context修饰getUser()的一个方法参数后,就可以将当前的HttpServletRequest注入进来,然后直接调用servlet api获取IP。</p>
<blockquote>
@@ -258,7 +258,7 @@ http://localhost:8080/users/1003
<p>第二种方式,用dubbo中常用的RpcContext:</p>
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> User <span class="hljs-title">getUser</span><span class="hljs-params">(@PathParam(<span class="hljs-string">"id"</span>)</span> Long id) </span>{
System.out.println(<span class="hljs-string">"Client address is "</span> + RpcContext.getContext().getRemoteAddressString());
-}
+}
</code></pre>
<blockquote>
<p>注意:这种方式只能在设置server="jetty"或者server="tomcat"或者server="servlet"或者server="tjws"的时候才能工作。另外,目前dubbo的RpcContext是一种比较有侵入性的用法,未来我们很可能会做出重构。</p>
@@ -300,13 +300,13 @@ http://localhost:8080/users/1003
<p>以前面代码为例:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@POST</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"register"</span>)
<span class="hljs-meta">@Consumes</span>({MediaType.APPLICATION_JSON})
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">registerUser</span><span class="hljs-params">(User user)</span> </span>{
<span class="hljs-comment">// save the user...</span>
- }
+ }
}
</code></pre>
<p>现在registerUser()的完整访问路径为:</p>
@@ -364,14 +364,14 @@ http://localhost:8080/users/1003
<span class="hljs-meta">@Autowired</span>
<span class="hljs-keyword">private</span> UserRepository userRepository;
-
+
<span class="hljs-meta">@POST</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"register"</span>)
<span class="hljs-meta">@Consumes</span>({MediaType.APPLICATION_JSON})
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">registerUser</span><span class="hljs-params">(User user)</span> </span>{
<span class="hljs-comment">// save the user</span>
userRepository.save(user);
- }
+ }
}
</code></pre>
<p>annotation的配置更简单更精确,通常也更便于维护(当然现代IDE都可以在xml中支持比如类名重构,所以就这里的特定用例而言,xml的维护性也很好)。而xml对代码的侵入性更小一些,尤其有利于动态修改配置,特别是比如你要针对单个服务配置连接超时时间、每客户端最大连接数、集群策略、权重等等。另外,特别对复杂应用或者模块来说,xml提供了一个中心点来涵盖的所有组件和配置,更一目了然,一般更便于项目长时期的维护。</p>
@@ -390,7 +390,7 @@ http://localhost:8080/users/1003
</code></pre>
<p>Interceptor主要用于访问和修改输入与输出字节流,例如,手动添加GZIP压缩:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">GZIPWriterInterceptor</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">WriterInterceptor</span> </span>{
-
+
<span class="hljs-meta">@Override</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">aroundWriteTo</span><span class="hljs-params">(WriterInterceptorContext context)</span>
<span class="hljs-keyword">throws</span> IOException, WebApplicationException </span>{
@@ -410,7 +410,7 @@ http://localhost:8080/users/1003
</blockquote>
<p>如果REST的消费端也是dubbo系统(参见下文的讨论),则也可以用类似方式为消费端配置Interceptor和Filter。但注意,JAX-RS中消费端的Filter和提供端的Filter是两种不同的接口。例如前面例子中服务端是ContainerResponseFilter接口,而消费端对应的是ClientResponseFilter:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LoggingFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ClientResponseFilter</span> </span>{
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">filter</span><span class="hljs-params">(ClientRequestContext reqCtx, ClientResponseContext resCtx)</span> <span class="hljs-keyword">throws</span> IOException </span>{
System.out.println(<span class="hljs-string">"status: "</span> + resCtx.getStatus());
System.out.println(<span class="hljs-string">"date: "</span> + resCtx.getDate());
@@ -425,14 +425,14 @@ http://localhost:8080/users/1003
System.out.print(<span class="hljs-string">"\n"</span>);
}
System.out.println(<span class="hljs-string">"media-type: "</span> + resCtx.getMediaType().getType());
- }
+ }
}
</code></pre>
<h3>添加自定义的Exception处理</h3>
<p>Dubbo的REST也支持JAX-RS标准的ExceptionMapper,可以用来定制特定exception发生后应该返回的HTTP响应。</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomExceptionMapper</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ExceptionMapper</span><<span class="hljs-title">NotFoundException</span>> </span>{
- <span class="hljs-function"><span class="hljs-keyword">public</span> Response <span class="hljs-title">toResponse</span><span class="hljs-params">(NotFoundException e)</span> </span>{
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Response <span class="hljs-title">toResponse</span><span class="hljs-params">(NotFoundException e)</span> </span>{
<span class="hljs-keyword">return</span> Response.status(Response.Status.NOT_FOUND).entity(<span class="hljs-string">"Oops! the requested resource is not found!"</span>).type(<span class="hljs-string">"text/plain"</span>).build();
}
}
@@ -458,7 +458,7 @@ http://localhost:8080/users/1003
<span class="hljs-tag"></<span class="hljs-name">root</span>></span>
</code></pre>
<p>然后在日志中会有类似如下的内容输出:</p>
-<pre><code>The HTTP headers are:
+<pre><code>The HTTP headers are:
accept: application/json;charset=UTF-8
accept-encoding: gzip, deflate
connection: Keep-Alive
@@ -467,7 +467,7 @@ content-type: application/json
host: 192.168.1.100:8888
user-agent: Apache-HttpClient/4.2.1 (java 1.5)
</code></pre>
-<pre><code>The contents of request body is:
+<pre><code>The contents of request body is:
{"id":1,"name":"dang"}
</code></pre>
<p>打开HTTP日志输出后,除了正常日志输出的性能开销外,也会在比如HTTP请求解析时产生额外的开销,因为需要建立额外的内存缓冲区来为日志的输出做数据准备。</p>
@@ -475,7 +475,7 @@ user-agent: Apache-HttpClient/4.2.1 (java 1.5)
<p>dubbo的rest支持采用Java标准的bean validation annotation(JSR 303)来做输入校验http://beanvalidation.org/</p>
<p>为了和其他dubbo远程调用协议保持一致,在rest中作校验的annotation必须放在服务的接口上,例如:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-function">User <span class="hljs-title">getUser</span><span class="hljs-params">(@Min(value=<span class="hljs-number">1</span>L, message=<span class="hljs-string">"User ID must be greater than 1"</span>)</span> Long id)</span>;
}
@@ -530,4 +530,4 @@ user-agent: Apache-HttpClient/4.2.1 (java 1.5)
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/rmi.html b/en-us/docs/user/references/protocol/rmi.html
index 7da0b99..c2ff9e0 100644
--- a/en-us/docs/user/references/protocol/rmi.html
+++ b/en-us/docs/user/references/protocol/rmi.html
@@ -60,7 +60,7 @@
<p>configure multiple port:</p>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"rmi1"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"rmi"</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"1099"</span> /></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"rmi2"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"rmi"</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"2099"</span> /></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">protocol</span>=<span class="hljs-string">"rmi1"</span> /></span>
</code></pre>
<p>Compatible with Spring:</p>
@@ -83,4 +83,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/thrift.html b/en-us/docs/user/references/protocol/thrift.html
index bdfeae2..38e50a4 100644
--- a/en-us/docs/user/references/protocol/thrift.html
+++ b/en-us/docs/user/references/protocol/thrift.html
@@ -48,4 +48,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/thrift.json b/en-us/docs/user/references/protocol/thrift.json
index 1e256ee..21c1b73 100644
--- a/en-us/docs/user/references/protocol/thrift.json
+++ b/en-us/docs/user/references/protocol/thrift.json
@@ -3,4 +3,4 @@
"__html": "<h1>thrift://</h1>\n<p>The current dubbo support thrift protocol is an extension of the thrift native protocol, adding some additional header information to the native protocol, such as service name, magic number, and so on.</p>\n<p>The use of dubbo thrift protocol also need to use thrift idl compiler to generate the corresponding java code, follow-up version will do some enhancement in this aspect.</p>\n<h2>dependency</h2>\n<pre><code class=\"language-xml\"><span class=\"hl [...]
"link": "/en-us/docs/user/references/protocol/thrift.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/en-us/docs/user/references/protocol/webservice.html b/en-us/docs/user/references/protocol/webservice.html
index 5acde91..ee53d8f 100644
--- a/en-us/docs/user/references/protocol/webservice.html
+++ b/en-us/docs/user/references/protocol/webservice.html
@@ -104,4 +104,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/qos.html b/en-us/docs/user/references/qos.html
index 3f6b370..ff52fb9 100644
--- a/en-us/docs/user/references/qos.html
+++ b/en-us/docs/user/references/qos.html
@@ -106,7 +106,7 @@ OK
</ul>
<h3>Offline service Command</h3>
<p>Offline command can be used if temporary offline service is needed when fault occurs.</p>
-<pre><code>//offline all service
+<pre><code>//offline all service
dubbo>offline
OK
@@ -118,7 +118,7 @@ OK
<pre><code>//list all commands
dubbo>help
-//list the specific use case of a command
+//list the specific use case of a command
dubbo>help online
+--------------+----------------------------------------------------------------------------------+
| COMMAND NAME | online |
@@ -221,4 +221,4 @@ dubbo.application.qosAcceptForeignIp=false
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/registry/introduction.html b/en-us/docs/user/references/registry/introduction.html
index fb98f18..e08a48b 100644
--- a/en-us/docs/user/references/registry/introduction.html
+++ b/en-us/docs/user/references/registry/introduction.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/registry/multicast.html b/en-us/docs/user/references/registry/multicast.html
index bd70f59..d0e9207 100644
--- a/en-us/docs/user/references/registry/multicast.html
+++ b/en-us/docs/user/references/registry/multicast.html
@@ -53,4 +53,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/registry/redis.html b/en-us/docs/user/references/registry/redis.html
index 622aff5..6785cb2 100644
--- a/en-us/docs/user/references/registry/redis.html
+++ b/en-us/docs/user/references/registry/redis.html
@@ -92,4 +92,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/registry/simple.html b/en-us/docs/user/references/registry/simple.html
index 8b1559f..5b504e9 100644
--- a/en-us/docs/user/references/registry/simple.html
+++ b/en-us/docs/user/references/registry/simple.html
@@ -62,4 +62,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/registry/zookeeper.html b/en-us/docs/user/references/registry/zookeeper.html
index 8d02c24..eab8bc0 100644
--- a/en-us/docs/user/references/registry/zookeeper.html
+++ b/en-us/docs/user/references/registry/zookeeper.html
@@ -127,4 +127,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/telnet.html b/en-us/docs/user/references/telnet.html
index 671784a..117f8e4 100644
--- a/en-us/docs/user/references/telnet.html
+++ b/en-us/docs/user/references/telnet.html
@@ -121,4 +121,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-application.html b/en-us/docs/user/references/xml/dubbo-application.html
index fca2b83..447a51d 100644
--- a/en-us/docs/user/references/xml/dubbo-application.html
+++ b/en-us/docs/user/references/xml/dubbo-application.html
@@ -127,4 +127,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-argument.html b/en-us/docs/user/references/xml/dubbo-argument.html
index 8944c2d..e3e3be8 100644
--- a/en-us/docs/user/references/xml/dubbo-argument.html
+++ b/en-us/docs/user/references/xml/dubbo-argument.html
@@ -81,4 +81,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-consumer.html b/en-us/docs/user/references/xml/dubbo-consumer.html
index f0ed2fb..f767cad 100644
--- a/en-us/docs/user/references/xml/dubbo-consumer.html
+++ b/en-us/docs/user/references/xml/dubbo-consumer.html
@@ -227,4 +227,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-method.html b/en-us/docs/user/references/xml/dubbo-method.html
index 2df7084..ee406d2 100644
--- a/en-us/docs/user/references/xml/dubbo-method.html
+++ b/en-us/docs/user/references/xml/dubbo-method.html
@@ -212,4 +212,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-module.html b/en-us/docs/user/references/xml/dubbo-module.html
index fd38d45..c16c787 100644
--- a/en-us/docs/user/references/xml/dubbo-module.html
+++ b/en-us/docs/user/references/xml/dubbo-module.html
@@ -87,4 +87,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-monitor.html b/en-us/docs/user/references/xml/dubbo-monitor.html
index 25715c5..0a4b51a 100644
--- a/en-us/docs/user/references/xml/dubbo-monitor.html
+++ b/en-us/docs/user/references/xml/dubbo-monitor.html
@@ -67,4 +67,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-parameter.html b/en-us/docs/user/references/xml/dubbo-parameter.html
index ac7b647..0ad08fb 100644
--- a/en-us/docs/user/references/xml/dubbo-parameter.html
+++ b/en-us/docs/user/references/xml/dubbo-parameter.html
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-protocol.html b/en-us/docs/user/references/xml/dubbo-protocol.html
index 60d35b3..3fdd8b4 100644
--- a/en-us/docs/user/references/xml/dubbo-protocol.html
+++ b/en-us/docs/user/references/xml/dubbo-protocol.html
@@ -287,4 +287,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-provider.html b/en-us/docs/user/references/xml/dubbo-provider.html
index 7e6f90c..1df2308 100644
--- a/en-us/docs/user/references/xml/dubbo-provider.html
+++ b/en-us/docs/user/references/xml/dubbo-provider.html
@@ -487,4 +487,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-reference.html b/en-us/docs/user/references/xml/dubbo-reference.html
index d3fefbd..45f7c6b 100644
--- a/en-us/docs/user/references/xml/dubbo-reference.html
+++ b/en-us/docs/user/references/xml/dubbo-reference.html
@@ -317,4 +317,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-registry.html b/en-us/docs/user/references/xml/dubbo-registry.html
index 8199749..c76e1e5 100644
--- a/en-us/docs/user/references/xml/dubbo-registry.html
+++ b/en-us/docs/user/references/xml/dubbo-registry.html
@@ -197,4 +197,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/dubbo-service.html b/en-us/docs/user/references/xml/dubbo-service.html
index 30cc036..0412eab 100644
--- a/en-us/docs/user/references/xml/dubbo-service.html
+++ b/en-us/docs/user/references/xml/dubbo-service.html
@@ -357,4 +357,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/references/xml/introduction.html b/en-us/docs/user/references/xml/introduction.html
index 32f4433..c9776bd 100644
--- a/en-us/docs/user/references/xml/introduction.html
+++ b/en-us/docs/user/references/xml/introduction.html
@@ -49,4 +49,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/rest.html b/en-us/docs/user/rest.html
index 83390eb..4c0ae63 100644
--- a/en-us/docs/user/rest.html
+++ b/en-us/docs/user/rest.html
@@ -146,14 +146,14 @@
</code></pre>
<p>Any client can POST a JSON string containing the user's information to the above URL to complete the user registration.</p>
<p>First, implement the interface of the service:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserService</span> </span>{
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserService</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">registerUser</span><span class="hljs-params">(User user)</span></span>;
}
</code></pre>
<p>Then, implement the service:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@POST</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"register"</span>)
<span class="hljs-meta">@Consumes</span>({MediaType.APPLICATION_JSON})
@@ -216,7 +216,7 @@ http://localhost:8080/users/1003
<p>The development of REST services based on Dubbo is mainly configured through JAX-RS annotations. In the above example, we put the annotation in the implementation class of the service. But in fact, we can completely put the annotation in the interface of the service. These two methods are completely equivalent, for example:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@GET</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"{id : \\d+}"</span>)
<span class="hljs-meta">@Produces</span>({MediaType.APPLICATION_JSON})
@@ -276,18 +276,18 @@ http://localhost:8080/users/1003
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RegistrationResult</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{
<span class="hljs-keyword">private</span> Long id;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">RegistrationResult</span><span class="hljs-params">()</span> </span>{
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">RegistrationResult</span><span class="hljs-params">(Long id)</span> </span>{
<span class="hljs-keyword">this</span>.id = id;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Long <span class="hljs-title">getId</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> id;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setId</span><span class="hljs-params">(Long id)</span> </span>{
<span class="hljs-keyword">this</span>.id = id;
}
@@ -300,7 +300,7 @@ http://localhost:8080/users/1003
<pre><code class="language-javascript">{<span class="hljs-string">"id"</span>: <span class="hljs-number">1001</span>}
</code></pre>
<p>If you do not add a wrapper, the JSON return value will be directly</p>
-<pre><code>1001
+<pre><code>1001
</code></pre>
<p>In XML, the return value after adding wrapper will be:</p>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">registrationResult</span>></span>
@@ -323,7 +323,7 @@ While in XML, after adding wrapper, the return value will be</p>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">User</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serializable</span> </span>{
<span class="hljs-meta">@XmlElement</span>(name=<span class="hljs-string">"username"</span>)
- <span class="hljs-keyword">private</span> String name;
+ <span class="hljs-keyword">private</span> String name;
}
</code></pre>
<p>Customizing the object properties to map to the names of the JSON field:</p>
@@ -391,7 +391,7 @@ instead of deploying to a Java application server, we recommend the following co
<p>The first one is using @Context annotation from JAX-RS:</p>
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> User <span class="hljs-title">getUser</span><span class="hljs-params">(@PathParam(<span class="hljs-string">"id"</span>)</span> Long id, @Context HttpServletRequest request) </span>{
System.out.println(<span class="hljs-string">"Client address is "</span> + request.getRemoteAddr());
-}
+}
</code></pre>
<p>After decorating a parameter of <code>getUser()</code> with Context, we can inject the current HttpServletRequest and then call the servlet api to get the IP.</p>
<blockquote>
@@ -400,7 +400,7 @@ instead of deploying to a Java application server, we recommend the following co
<p>The second method is to use RpcContext, which is commonly seen in dubbo:</p>
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> User <span class="hljs-title">getUser</span><span class="hljs-params">(@PathParam(<span class="hljs-string">"id"</span>)</span> Long id) </span>{
System.out.println(<span class="hljs-string">"Client address is "</span> + RpcContext.getContext().getRemoteAddressString());
-}
+}
</code></pre>
<blockquote>
<p>Notice: Similarly, this method only works in the jetty, tomcat, servlet or tjws server. In dubbo, the usage of RpcContext is rather invasive. We are likely to refactor it in the future.</p>
@@ -444,13 +444,13 @@ implemented the servlet container.</p>
<p>Let's have a look at the previous code:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">UserServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@POST</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"register"</span>)
<span class="hljs-meta">@Consumes</span>({MediaType.APPLICATION_JSON})
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">registerUser</span><span class="hljs-params">(User user)</span> </span>{
<span class="hljs-comment">// save the user...</span>
- }
+ }
}
</code></pre>
<p>Now the complete path would be:</p>
@@ -514,14 +514,14 @@ However, dubbo/spring itself supports the use of annotation for configuration, s
<span class="hljs-meta">@Autowired</span>
<span class="hljs-keyword">private</span> UserRepository userRepository;
-
+
<span class="hljs-meta">@POST</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"register"</span>)
<span class="hljs-meta">@Consumes</span>({MediaType.APPLICATION_JSON})
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">registerUser</span><span class="hljs-params">(User user)</span> </span>{
<span class="hljs-comment">// save the user</span>
userRepository.save(user);
- }
+ }
}
</code></pre>
<p>Annotation-based configuration is more concise and precise, and often easier to maintain (modern IDE can support such things as class name refactoring in XML, and therefore the maintenance of XML is good for specific use cases here). XML is less intrusive to code, especially for dynamically modifying configurations, especially when you want to modify the timeout for connection of a single service configuration, the maximum number of connections per client, cluster policy, weights, and [...]
@@ -540,7 +540,7 @@ However, dubbo/spring itself supports the use of annotation for configuration, s
</code></pre>
<p>Interceptor is mainly used to access and modify the input and output byte streams, for example, manually adding GZIP compression:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">GZIPWriterInterceptor</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">WriterInterceptor</span> </span>{
-
+
<span class="hljs-meta">@Override</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">aroundWriteTo</span><span class="hljs-params">(WriterInterceptorContext context)</span>
<span class="hljs-keyword">throws</span> IOException, WebApplicationException </span>{
@@ -561,7 +561,7 @@ However, dubbo/spring itself supports the use of annotation for configuration, s
<p>If the REST consumer is also a Dubbo system (see discussion below), you can also configure the Interceptor and Filter for the consumer in a similar way.</p>
<p>However, it should be noted that the consumer-side Filter and the provider-side Filter in JAX-RS are two different interfaces. For example, in the previous example, the server is the ContainerResponseFilter interface, and the consumer side corresponds to the ClientResponseFilter:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">LoggingFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ClientResponseFilter</span> </span>{
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">filter</span><span class="hljs-params">(ClientRequestContext reqCtx, ClientResponseContext resCtx)</span> <span class="hljs-keyword">throws</span> IOException </span>{
System.out.println(<span class="hljs-string">"status: "</span> + resCtx.getStatus());
System.out.println(<span class="hljs-string">"date: "</span> + resCtx.getDate());
@@ -576,14 +576,14 @@ However, dubbo/spring itself supports the use of annotation for configuration, s
System.out.print(<span class="hljs-string">"\n"</span>);
}
System.out.println(<span class="hljs-string">"media-type: "</span> + resCtx.getMediaType().getType());
- }
+ }
}
</code></pre>
<h3>Adding custom Exception handler</h3>
<p>Dubbo RESTful Remoting also supports JAX-RS standard ExceptionMapper, which can be used to customize the HTTP response after a particular exception occurs.</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">CustomExceptionMapper</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ExceptionMapper</span><<span class="hljs-title">NotFoundException</span>> </span>{
- <span class="hljs-function"><span class="hljs-keyword">public</span> Response <span class="hljs-title">toResponse</span><span class="hljs-params">(NotFoundException e)</span> </span>{
+ <span class="hljs-function"><span class="hljs-keyword">public</span> Response <span class="hljs-title">toResponse</span><span class="hljs-params">(NotFoundException e)</span> </span>{
<span class="hljs-keyword">return</span> Response.status(Response.Status.NOT_FOUND).entity(<span class="hljs-string">"Oops! the requested resource is not found!"</span>).type(<span class="hljs-string">"text/plain"</span>).build();
}
}
@@ -609,7 +609,7 @@ However, dubbo/spring itself supports the use of annotation for configuration, s
<span class="hljs-tag"></<span class="hljs-name">root</span>></span>
</code></pre>
<p>Then there will be something like the following output in the log:</p>
-<pre><code>The HTTP headers are:
+<pre><code>The HTTP headers are:
accept: application/json;charset=UTF-8
accept-encoding: gzip, deflate
connection: Keep-Alive
@@ -618,7 +618,7 @@ content-type: application/json
host: 192.168.1.100:8888
user-agent: Apache-HttpClient/4.2.1 (java 1.5)
</code></pre>
-<pre><code>The contents of request body is:
+<pre><code>The contents of request body is:
{"id":1,"name":"dang"}
</code></pre>
<p>After the HTTP log output is turned on, in addition to the performance overhead of the normal log output, additional overhead is generated in, for example, HTTP request parsing, because an additional memory buffer needs to be allocated to prepare the data for the log output.</p>
@@ -626,7 +626,7 @@ user-agent: Apache-HttpClient/4.2.1 (java 1.5)
<p>Dubbo RESTful Remoting supports the use of the Java standard bean validation annotation(JSR 303) for input validation <a href="http://beanvalidation.org/">http://beanvalidation.org/</a>.</p>
<p>In order to be consistent with other Dubbo remote invocation protocols, the annotations that are checked for rest must be placed on the interface of the service, for example:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-function">User <span class="hljs-title">getUser</span><span class="hljs-params">(@Min(value=<span class="hljs-number">1</span>L, message=<span class="hljs-string">"User ID must be greater than 1"</span>)</span> Long id)</span>;
}
</code></pre>
@@ -705,7 +705,7 @@ Response response = target.request().post(Entity.entity(user, MediaType.APPLICAT
<p>As mentioned earlier, in this scenario, JAX-RS annotations must be added to the service interface, so that the corresponding REST configuration information can be shared on the consumer side of Dubbo and remotely called accordingly:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@GET</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"{id : \\d+}"</span>)
<span class="hljs-meta">@Produces</span>({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@@ -730,7 +730,7 @@ http://api.foo.com/services/users/1002
<p>We can write service interfaces and parameter classes based on this information:</p>
<pre><code class="language-java"><span class="hljs-meta">@Path</span>(<span class="hljs-string">"users"</span>)
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">UserService</span> </span>{
-
+
<span class="hljs-meta">@GET</span>
<span class="hljs-meta">@Path</span>(<span class="hljs-string">"{id : \\d+}"</span>)
<span class="hljs-meta">@Produces</span>({MediaType.APPLICATION_JSON})
@@ -979,4 +979,4 @@ Excute a five-minute performance test. (Reference to Dubbo's own test considerat
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/docs/user/simple-monitor.html b/en-us/docs/user/simple-monitor.html
index b3415fb..4e95582 100644
--- a/en-us/docs/user/simple-monitor.html
+++ b/en-us/docs/user/simple-monitor.html
@@ -25,19 +25,19 @@
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="hljs-attr">xmlns:dubbo</span>=<span class="hljs-string">"http://dubbo.apache.org/schema/dubbo"</span>
<span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
-
+
<span class="hljs-comment"><!-- configuration of current application --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:application</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"simple-monitor"</span> /></span>
-
+
<span class="hljs-comment"><!-- connection address of the registry --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"127.0.0.1:9090"</span> /></span>
-
+
<span class="hljs-comment"><!-- protool configuration of exposed services --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"7070"</span> /></span>
-
+
<span class="hljs-comment"><!-- configuration of certain exposed service --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.monitor.MonitorService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"monitorService"</span> /></span>
-
+
<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"monitorService"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"org.apache.dubbo.monitor.simple.SimpleMonitorService"</span> /></span>
<span class="hljs-tag"></<span class="hljs-name">beans</span>></span>
</code></pre>
@@ -59,17 +59,17 @@
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="hljs-attr">xmlns:dubbo</span>=<span class="hljs-string">"http://dubbo.apache.org/schema/dubbo"</span>
<span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
-
+
<span class="hljs-comment"><!-- configuration of current application --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:application</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"simple-monitor"</span> /></span>
-
+
<span class="hljs-comment"><!-- protool configuration of exposed service --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"7070"</span> /></span>
-
+
<span class="hljs-comment"><!-- configuration of exposed service --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"org.apache.dubbo.monitor.MonitorService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"monitorService"</span> <span class="hljs-attr">registry</span>=<span class="hljs-string">"N/A"</span> /></span>
-
-<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"monitorService"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"org.apache.dubbo.monitor.simple.SimpleMonitorService"</span> /></span>
+
+<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"monitorService"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"org.apache.dubbo.monitor.simple.SimpleMonitorService"</span> /></span>
<span class="hljs-tag"></<span class="hljs-name">beans</span>></span>
</code></pre>
</li>
@@ -103,4 +103,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/en-us/index.html b/en-us/index.html
index 5a0c327..0a05183 100644
--- a/en-us/index.html
+++ b/en-us/index.html
@@ -29,4 +29,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/md_json/blog.json b/md_json/blog.json
index 7911565..6cfad96 100644
--- a/md_json/blog.json
+++ b/md_json/blog.json
@@ -768,4 +768,4 @@
}
}
]
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/apachecon-na-2018.html b/zh-cn/blog/apachecon-na-2018.html
index f21ffea..a4304cc 100644
--- a/zh-cn/blog/apachecon-na-2018.html
+++ b/zh-cn/blog/apachecon-na-2018.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/build-new-docker-image-in-dockerhub.html b/zh-cn/blog/build-new-docker-image-in-dockerhub.html
index f348cd2..eba6197 100644
--- a/zh-cn/blog/build-new-docker-image-in-dockerhub.html
+++ b/zh-cn/blog/build-new-docker-image-in-dockerhub.html
@@ -70,4 +70,4 @@ Docker官方维护了一个公共仓库DockerHub,该仓库还有很多国内
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/build-new-docker-image-in-dockerhub.json b/zh-cn/blog/build-new-docker-image-in-dockerhub.json
index acd8ca1..9e3139d 100644
--- a/zh-cn/blog/build-new-docker-image-in-dockerhub.json
+++ b/zh-cn/blog/build-new-docker-image-in-dockerhub.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo Admin,Docker,Dockerhub",
"description": "本文将介绍如何在Dockerhub上发布Dubbo Admin镜像。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/download.html b/zh-cn/blog/download.html
index 7d6476b..b61329b 100644
--- a/zh-cn/blog/download.html
+++ b/zh-cn/blog/download.html
@@ -18,123 +18,123 @@
<h2>Apache Dubbo</h2>
<p>请点击了解各<a href="http://dubbo.apache.org/zh-cn/docs/user/versions/index.html">版本详情和升级注意事项</a></p>
<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo">https://github.com/apache/dubbo</a> <br>
-发布说明:<a href="https://github.com/apache/dubbo/releases">https://github.com/apache/dubbo/releases</a></p>
+<p>GitHub: <a href="https://github.com/apache/incubator-dubbo">https://github.com/apache/incubator-dubbo</a> <br>
+发布说明:<a href="https://github.com/apache/incubator-dubbo/releases">https://github.com/apache/incubator-dubbo/releases</a></p>
</blockquote>
<h3>2.7.1 (2019-03-26)</h3>
<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-2.7.1-src.zip">source</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-src.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-src.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-2.7.1-bin.zip">binary</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-bin.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-2.7.1-bin.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip">source</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-src.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip">binary</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.7.1/apache-dubbo-incubating-2.7.1-bin.zip.sha512">sha512</a></li>
</ul>
<h3>2.7.0 (2019-01-29)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-2.7.0-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.7.0/apache-dubbo-incubating-2.7.0-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.6 (2019-03-07)</h3>
<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-2.6.6-source-release.zip">source</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-2.6.6-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-2.6.6-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip">source</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip">binary</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/2.6.6/apache-dubbo-incubating-2.6.6-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.5 (2018-11-23)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-2.6.5-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.5/apache-dubbo-incubating-2.6.5-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.4 (2018-10-08)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-2.6.4-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.4/apache-dubbo-incubating-2.6.4-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.3 (2018-09-11)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-2.6.3-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.3/apache-dubbo-incubating-2.6.3-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.6.2 (2018-06-07)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-2.6.2-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/2.6.2/dubbo-incubating-2.6.2-bin-release.zip.sha512">sha512</a></li>
</ul>
<h2>Dubbo Spring Boot Starter</h2>
<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo-spring-boot-project">https://github.com/apache/dubbo-spring-boot-project</a> <br>
-发布说明:<a href="https://github.com/apache/dubbo-spring-boot-project/releases">https://github.com/apache/dubbo-spring-boot-project/releases</a></p>
+<p>GitHub: <a href="https://github.com/apache/incubator-dubbo-spring-boot-project">https://github.com/apache/incubator-dubbo-spring-boot-project</a> <br>
+发布说明:<a href="https://github.com/apache/incubator-dubbo-spring-boot-project/releases">https://github.com/apache/incubator-dubbo-spring-boot-project/releases</a></p>
</blockquote>
<h3>2.7.1 (2019-04-09)</h3>
<ul>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-source-release.zip">source</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-source-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-bin-release.zip">binary</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-bin-release.zip.asc">asc</a> |
-<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-2.7.1-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip">source</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://www.apache.org/dyn/closer.cgi?path=incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip">binary</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip.asc">asc</a> |
+<a href="https://www.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.1/apache-dubbo-spring-boot-project-incubating-2.7.1-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>2.7.0 (2019-02-14)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-2.7.0-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/2.7.0/apache-dubbo-spring-boot-project-incubating-2.7.0-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>0.2.1 (2019-01-27)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-0.2.1-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.2.1/apache-dubbo-spring-boot-project-incubating-0.2.1-bin-release.zip.sha512">sha512</a></li>
</ul>
<h3>0.1.2 (2019-01-27)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-source-release.zip.sha512">sha512</a></li>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-bin-release.zip">binary</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-bin-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-0.1.2-bin-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip">binary</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/spring-boot-project/0.1.2/apache-dubbo-spring-boot-project-incubating-0.1.2-bin-release.zip.sha512">sha512</a></li>
</ul>
<h2>Dubbo Admin</h2>
<blockquote>
-<p>GitHub: <a href="https://github.com/apache/dubbo-admin">https://github.com/apache/dubbo-admin</a> <br>
-发布说明:<a href="https://github.com/apache/dubbo-admin/releases">https://github.com/apache/dubbo-admin/releases</a></p>
+<p>GitHub: <a href="https://github.com/apache/incubator-dubbo-admin">https://github.com/apache/incubator-dubbo-admin</a> <br>
+发布说明:<a href="https://github.com/apache/incubator-dubbo-admin/releases">https://github.com/apache/incubator-dubbo-admin/releases</a></p>
</blockquote>
<h3>0.1 (2019-02-15)</h3>
<ul>
-<li><a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-0.1-source-release.zip">source</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-0.1-source-release.zip.asc">asc</a> |
-<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-0.1-source-release.zip.sha512">sha512</a></li>
+<li><a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip">source</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.asc">asc</a> |
+<a href="https://archive.apache.org/dist/incubator/dubbo/dubbo-ops/0.1/apache-dubbo-ops-incubating-0.1-source-release.zip.sha512">sha512</a></li>
</ul>
</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a href=" [...]
<script src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js"></script>
@@ -153,4 +153,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/download.json b/zh-cn/blog/download.json
index 091b04c..1b2d0c7 100644
--- a/zh-cn/blog/download.json
+++ b/zh-cn/blog/download.json
@@ -1,10 +1,10 @@
{
"filename": "download.md",
- "__html": "<h1>下载中心</h1>\n<h2>验证</h2>\n<p>可以按照这里的<a href=\"https://www.apache.org/info/verification\">步骤</a>, 利用<a href=\"https://www.apache.org/dist/incubator/dubbo/KEYS\">KEYS</a>文件来验证下载。</p>\n<h2>Apache Dubbo</h2>\n<p>请点击了解各<a href=\"http://dubbo.apache.org/zh-cn/docs/user/versions/index.html\">版本详情和升级注意事项</a></p>\n<blockquote>\n<p>GitHub: <a href=\"https://github.com/apache/dubbo\">https://github.com/apache/dubbo</a> <br>\n发布说明:<a href=\"https://github.com/apache/dubbo/releases\">h [...]
+ "__html": "<h1>下载中心</h1>\n<h2>验证</h2>\n<p>可以按照这里的<a href=\"https://www.apache.org/info/verification\">步骤</a>, 利用<a href=\"https://www.apache.org/dist/incubator/dubbo/KEYS\">KEYS</a>文件来验证下载。</p>\n<h2>Apache Dubbo</h2>\n<p>请点击了解各<a href=\"http://dubbo.apache.org/zh-cn/docs/user/versions/index.html\">版本详情和升级注意事项</a></p>\n<blockquote>\n<p>GitHub: <a href=\"https://github.com/apache/incubator-dubbo\">https://github.com/apache/incubator-dubbo</a> <br>\n发布说明:<a href=\"https://github.com/apach [...]
"link": "/zh-cn/blog/download.html",
"meta": {
"title": "下载中心",
"keywords": "Dubbo, Downloads, Version",
"description": "本文将向你介绍如何点击了解各版本详情和升级注意事项。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-101.html b/zh-cn/blog/dubbo-101.html
index 052b902..12b0657 100644
--- a/zh-cn/blog/dubbo-101.html
+++ b/zh-cn/blog/dubbo-101.html
@@ -192,11 +192,11 @@ INFO] Scanning <span class="hljs-keyword">for</span> projects...
<p>通过运行以下的 maven 命令来启动服务提供者:</p>
<pre><code class="language-bash">$ mvn -Djava.net.preferIPv4Stack=<span class="hljs-literal">true</span> -Dexec.mainClass=com.alibaba.dubbo.samples.server.Application <span class="hljs-built_in">exec</span>:java
[INFO] Scanning <span class="hljs-keyword">for</span> projects...
-[INFO]
+[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building dubbo-samples-api 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
-[INFO]
+[INFO]
[INFO] --- <span class="hljs-built_in">exec</span>-maven-plugin:1.6.0:java (default-cli) @ dubbo-samples-api ---
log4j:WARN No appenders could be found <span class="hljs-keyword">for</span> logger (com.alibaba.dubbo.common.logger.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
@@ -208,11 +208,11 @@ first-dubbo-provider is running.
<p>通过运行以下的 maven 命令来调用服务:</p>
<pre><code class="language-bash">$ mvn -Djava.net.preferIPv4Stack=<span class="hljs-literal">true</span> -Dexec.mainClass=com.alibaba.dubbo.samples.client.Application <span class="hljs-built_in">exec</span>:java
[INFO] Scanning <span class="hljs-keyword">for</span> projects...
-[INFO]
+[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building dubbo-samples-api 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
-[INFO]
+[INFO]
[INFO] --- <span class="hljs-built_in">exec</span>-maven-plugin:1.6.0:java (default-cli) @ dubbo-samples-api ---
log4j:WARN No appenders could be found <span class="hljs-keyword">for</span> logger (com.alibaba.dubbo.common.logger.LoggerFactory).
log4j:WARN Please initialize the log4j system properly.
@@ -251,17 +251,17 @@ hi, dubbo
<li>启动 <em>Spring Boot</em> 上下文。</li>
</ol>
<p>可以直接在 IDE 中运行,输出结果如下:</p>
-<pre><code class="language-bash">2018-05-28 16:59:38.072 INFO 59943 --- [ main] a.b.d.c.e.WelcomeLogoApplicationListener :
-
- ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
- ███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███
- ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
- ███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███
- ███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███
- ███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███
- ███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███
- ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
+<pre><code class="language-bash">2018-05-28 16:59:38.072 INFO 59943 --- [ main] a.b.d.c.e.WelcomeLogoApplicationListener :
+ ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
+ ███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███
+ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
+ ███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███
+ ███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███
+ ███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███
+ ███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███
+ ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
+
:: Dubbo Spring Boot (v0.1.0) : https://github.com/dubbo/dubbo-spring-boot-project
:: Dubbo (v2.0.1) : https://github.com/alibaba/dubbo
@@ -283,15 +283,15 @@ hi, dubbo
Trying 127.0.0.1...
Connected to localhost.
Escape character is <span class="hljs-string">'^]'</span>.
- ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
- ███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███
- ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
- ███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███
- ███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███
- ███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███
- ███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███
- ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
-
+ ████████▄ ███ █▄ ▀█████████▄ ▀█████████▄ ▄██████▄
+ ███ ▀███ ███ ███ ███ ███ ███ ███ ███ ███
+ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███
+ ███ ███ ███ ███ ▄███▄▄▄██▀ ▄███▄▄▄██▀ ███ ███
+ ███ ███ ███ ███ ▀▀███▀▀▀██▄ ▀▀███▀▀▀██▄ ███ ███
+ ███ ███ ███ ███ ███ ██▄ ███ ██▄ ███ ███
+ ███ ▄███ ███ ███ ███ ███ ███ ███ ███ ███
+ ████████▀ ████████▀ ▄█████████▀ ▄█████████▀ ▀██████▀
+
dubbo>
dubbo>ls
@@ -347,4 +347,4 @@ As Consumer side:
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-27-features.html b/zh-cn/blog/dubbo-27-features.html
index 87c3b57..5822c09 100644
--- a/zh-cn/blog/dubbo-27-features.html
+++ b/zh-cn/blog/dubbo-27-features.html
@@ -194,4 +194,4 @@ timestamp=1552975501873
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-27-features.json b/zh-cn/blog/dubbo-27-features.json
index c60335e..44b2a7a 100644
--- a/zh-cn/blog/dubbo-27-features.json
+++ b/zh-cn/blog/dubbo-27-features.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo2.7",
"description": "异步化改造,三大中心改造,服务治理增强"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-admin.html b/zh-cn/blog/dubbo-admin.html
index f1842e7..0c8cc4c 100644
--- a/zh-cn/blog/dubbo-admin.html
+++ b/zh-cn/blog/dubbo-admin.html
@@ -13,7 +13,7 @@
</head>
<body>
<div id="root"><div class="blog-detail-page" data-reactroot=""><header class="header-container header-container-normal"><div class="header-body"><a href="/zh-cn/index.html"><img class="logo" src="/img/dubbo_colorful.png"/></a><div class="search search-normal"><span class="icon-search"></span></div><span class="language-switch language-switch-normal">En</span><div class="header-menu"><img class="header-menu-toggle" src="/img/menu_gray.png"/><ul><li class="menu-item menu-item-normal"><a h [...]
-<pre><code>Demo地址:http://47.91.207.147/#/service
+<pre><code>Demo地址:http://47.91.207.147/#/service
github: https://github.com/apache/dubbo-ops
</code></pre>
<p>Dubbo Admin之前的版本过于老旧,也长期疏于维护,因此在去年年中的时候,对该项目进行了一次重构,项目结构上的变化如下:</p>
@@ -93,4 +93,4 @@ github: https://github.com/apache/dubbo-ops
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-admin.json b/zh-cn/blog/dubbo-admin.json
index 3988305..b88c935 100644
--- a/zh-cn/blog/dubbo-admin.json
+++ b/zh-cn/blog/dubbo-admin.json
@@ -3,4 +3,4 @@
"__html": "<h1>新版Dubbo Admin介绍</h1>\n<pre><code>Demo地址:http://47.91.207.147/#/service \ngithub: https://github.com/apache/dubbo-ops\n</code></pre>\n<p>Dubbo Admin之前的版本过于老旧,也长期疏于维护,因此在去年年中的时候,对该项目进行了一次重构,项目结构上的变化如下:</p>\n<ul>\n<li>将后端框架从webx替换成spring boot</li>\n<li>前端采用Vue和Vuetify.js作为开发框架</li>\n<li>移除velocity模板</li>\n<li>集成swagger,提供api管理功能</li>\n</ul>\n<p>当前版本的Dubbo Admin包含了之前版本中的绝大部分功能,包括服务治理,服务查询等,同时支持了Dubbo2.7中服务治理的新特性。</p>\n<h2>配置规范</h2>\n<p>由于在Dubbo2.7中,配置中心和注册中心做了分离,并且增加了元数据中心, [...]
"link": "/zh-cn/blog/dubbo-admin.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-annotation-driven.html b/zh-cn/blog/dubbo-annotation-driven.html
index 90376d2..8029eb9 100644
--- a/zh-cn/blog/dubbo-annotation-driven.html
+++ b/zh-cn/blog/dubbo-annotation-driven.html
@@ -278,7 +278,7 @@
<span class="hljs-comment">// 控制台输出信息</span>
System.out.println(message);
}
-
+
}
</code></pre>
<p><code>ProviderBootstrap</code> 启动并执行后,控制输出与预期一致:</p>
@@ -460,7 +460,7 @@
<span class="hljs-meta">@EnableTransactionManagement</span> <span class="hljs-comment">// 激活事务管理</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">ProviderConfiguration</span> </span>{
<span class="hljs-comment">// 省略其他配置 Bean 定义</span>
-
+
<span class="hljs-comment">/**
* 自定义事务管理器
*/</span>
@@ -551,4 +551,4 @@ DubboComponentScanRegistrar-85]-[main]-[INFO] 0 annotated @Service Components {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-annotation.html b/zh-cn/blog/dubbo-annotation.html
index 8162bd5..4012d2d 100644
--- a/zh-cn/blog/dubbo-annotation.html
+++ b/zh-cn/blog/dubbo-annotation.html
@@ -49,7 +49,7 @@
* <span class="hljs-doctag">@see</span> DubboComponentScan#basePackageClasses
*/</span>
<span class="hljs-meta">@AliasFor</span>(annotation = DubboComponentScan.class, attribute = <span class="hljs-string">"basePackageClasses"</span>)
- Class<?>[] scanBasePackageClasses() <span class="hljs-keyword">default</span> {};
+ Class<?>[] scanBasePackageClasses() <span class="hljs-keyword">default</span> {};
}
</code></pre>
<p>通过 <code>@EnableDubbo</code> 可以在指定的包名下(通过 <code>scanBasePackages</code>),或者指定的类中(通过 <code>scanBasePackageClasses</code>)扫描 Dubbo 的服务提供者(以 <code>@Service</code> 标注)以及 Dubbo 的服务消费者(以 <code>Reference</code> 标注)。</p>
@@ -78,7 +78,7 @@
<span class="hljs-function">String <span class="hljs-title">group</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #5</span>
<span class="hljs-function"><span class="hljs-keyword">boolean</span> <span class="hljs-title">export</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">true</span></span>; <span class="hljs-comment">// #6</span>
<span class="hljs-function"><span class="hljs-keyword">boolean</span> <span class="hljs-title">register</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">true</span></span>; <span class="hljs-comment">// #7</span>
-
+
<span class="hljs-function">String <span class="hljs-title">application</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #8</span>
<span class="hljs-function">String <span class="hljs-title">module</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #9</span>
<span class="hljs-function">String <span class="hljs-title">provider</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #10</span>
@@ -128,7 +128,7 @@
<span class="hljs-function">String <span class="hljs-title">version</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #4</span>
<span class="hljs-function">String <span class="hljs-title">group</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #5</span>
<span class="hljs-function">String <span class="hljs-title">url</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #6</span>
-
+
<span class="hljs-function">String <span class="hljs-title">application</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #7</span>
<span class="hljs-function">String <span class="hljs-title">module</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #8</span>
<span class="hljs-function">String <span class="hljs-title">consumer</span><span class="hljs-params">()</span> <span class="hljs-keyword">default</span> ""</span>; <span class="hljs-comment">// #9</span>
@@ -353,4 +353,4 @@ result: hello, annotation
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-basic-usage-dubbo-consumer-configuration.html b/zh-cn/blog/dubbo-basic-usage-dubbo-consumer-configuration.html
index 82b65ec..d943e9b 100644
--- a/zh-cn/blog/dubbo-basic-usage-dubbo-consumer-configuration.html
+++ b/zh-cn/blog/dubbo-basic-usage-dubbo-consumer-configuration.html
@@ -23,11 +23,11 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="hello-world-app" />
- <dubbo:registry address="multicast://224.5.6.7:1234" />
- <dubbo:protocol name="dubbo" port="20880" />
- <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+ <dubbo:application name="hello-world-app" />
+ <dubbo:registry address="multicast://224.5.6.7:1234" />
+ <dubbo:protocol name="dubbo" port="20880" />
+ <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>
</code></pre>
<blockquote>
@@ -134,15 +134,15 @@
<p>其他属性,可以参考上面的xsd。</p>
<h6>配置的覆盖关系</h6>
<p><img src="https://cdn.nlark.com/lark/0/2018/png/15841/1536496436861-1b63bc4e-3e59-4aa3-800e-a32cfe64950d.png" alt="undefined"></p>
-<center>配置的覆盖关系图</center>
+<center>配置的覆盖关系图</center>
<p>其中包含了consumer端和provider的配置,注意区分。</p>
<h4>annotation</h4>
<h6>Reference注解远程服务</h6>
<pre><code>
-public class AnnotationConsumeService {
+public class AnnotationConsumeService {
- @com.alibaba.dubbo.config.annotation.Reference
- public AnnotateService annotateService;
+ @com.alibaba.dubbo.config.annotation.Reference
+ public AnnotateService annotateService;
// ...
@@ -168,7 +168,7 @@ RegistryConfig registry = new RegistryConfig();
registry.setAddress("10.20.130.230:9090");
registry.setUsername("aaa");
registry.setPassword("bbb");
-
+
// 注意:ReferenceConfig为重对象,内部封装了与注册中心的连接,以及与服务提供方的连接
// 引用远程服务
ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
@@ -179,7 +179,7 @@ reference.setInterface(XxxService.class);
reference.setVersion("1.0.0");
// 和本地bean一样使用xxxService
-XxxService xxxService = reference.get();
+XxxService xxxService = reference.get();
</code></pre>
<h6>method特殊设置</h6>
<pre><code>
@@ -189,7 +189,7 @@ MethodConfig method = new MethodConfig();
method.setName("createXxx");
method.setTimeout(10000);
method.setRetries(0);
-methods.add(method);
+methods.add(method);
// 引用远程服务
ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此实例很重,封装了与注册中心的连接以及与提供者的连接,请自行缓存,否则可能造成内存和连接泄漏
...
@@ -204,7 +204,7 @@ reference.setMethods(methods); // 设置方法级配置
2.调用服务</p>
<pre><code>@RestController
public class UserTestController{
- @Autowired
+ @Autowired
private UserReadService userReadService;
@RequestMapping("/user/getById")
public String getUserById(Long id){
@@ -219,11 +219,11 @@ public class UserTestController{
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="hello-world-app" />
- <dubbo:registry address="multicast://224.5.6.7:1234" />
- <dubbo:protocol name="dubbo" port="20880" />
- <dubbo:reference id="userReadService" interface="com.package.UserReadService"check="false" />
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+ <dubbo:application name="hello-world-app" />
+ <dubbo:registry address="multicast://224.5.6.7:1234" />
+ <dubbo:protocol name="dubbo" port="20880" />
+ <dubbo:reference id="userReadService" interface="com.package.UserReadService"check="false" />
</beans>
</code></pre>
<p>Dubbo配置的其他方式可以参考上一章节的相关配置,或者使用集成dubbo spring boot starter方式。</p>
@@ -244,4 +244,4 @@ public class UserTestController{
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-basic-usage-dubbo-provider-configuration.html b/zh-cn/blog/dubbo-basic-usage-dubbo-provider-configuration.html
index 0880086..ac11cbc 100644
--- a/zh-cn/blog/dubbo-basic-usage-dubbo-provider-configuration.html
+++ b/zh-cn/blog/dubbo-basic-usage-dubbo-provider-configuration.html
@@ -25,12 +25,12 @@
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="hello-world-app" />
- <dubbo:registry address="multicast://224.5.6.7:1234" />
- <dubbo:protocol name="dubbo" port="20880" />
- <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />
- <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+ <dubbo:application name="hello-world-app" />
+ <dubbo:registry address="multicast://224.5.6.7:1234" />
+ <dubbo:protocol name="dubbo" port="20880" />
+ <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />
+ <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
</beans>
</code></pre>
<p>上面样例中,注意下dubbo schema的写法:</p>
@@ -269,7 +269,7 @@ dubbo.protocol.port=28080
<pre><code>import com.alibaba.dubbo.config.annotation.Service;
@Service(timeout = 5000)
-public class AnnotateServiceImpl implements AnnotateService {
+public class AnnotateServiceImpl implements AnnotateService {
// ...
}
</code></pre>
@@ -371,12 +371,12 @@ public User getUserById(Long userId);
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
- <dubbo:application name="hello-world-app" />
- <dubbo:registry address="multicast://224.5.6.7:1234" />
- <dubbo:protocol name="dubbo" port="20880" />
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
+ <dubbo:application name="hello-world-app" />
+ <dubbo:registry address="multicast://224.5.6.7:1234" />
+ <dubbo:protocol name="dubbo" port="20880" />
<bean id="userReadService" class="com.package.UserReadServiceImpl"/>
- <dubbo:service interface="com.package.UserReadService" ref="userReadService" />
+ <dubbo:service interface="com.package.UserReadService" ref="userReadService" />
</beans>
</code></pre>
<p>Dubbo配置的其他方式可以参考上一章节的相关配置,或者使用集成dubbo spring boot starter方式。</p>
@@ -397,4 +397,4 @@ public User getUserById(Long userId);
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-cluster-error-handling.html b/zh-cn/blog/dubbo-cluster-error-handling.html
index c045f2a..31456a5 100644
--- a/zh-cn/blog/dubbo-cluster-error-handling.html
+++ b/zh-cn/blog/dubbo-cluster-error-handling.html
@@ -183,7 +183,7 @@ Maven 项目结构:</p>
</code></pre>
<p>XxxCluster.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Cluster;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Directory;
@@ -229,4 +229,4 @@ Maven 项目结构:</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-compatible.html b/zh-cn/blog/dubbo-compatible.html
index 95849cd..72661b1 100644
--- a/zh-cn/blog/dubbo-compatible.html
+++ b/zh-cn/blog/dubbo-compatible.html
@@ -195,4 +195,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-context-information.html b/zh-cn/blog/dubbo-context-information.html
index d01cf0c..f84bf40 100644
--- a/zh-cn/blog/dubbo-context-information.html
+++ b/zh-cn/blog/dubbo-context-information.html
@@ -153,4 +153,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-contribute-to-opensource.html b/zh-cn/blog/dubbo-contribute-to-opensource.html
index f6c130c..1f6b70e 100644
--- a/zh-cn/blog/dubbo-contribute-to-opensource.html
+++ b/zh-cn/blog/dubbo-contribute-to-opensource.html
@@ -154,4 +154,4 @@ git merge upstream/master
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-contribute-to-opensource.json b/zh-cn/blog/dubbo-contribute-to-opensource.json
index 0066222..5aa4b6b 100644
--- a/zh-cn/blog/dubbo-contribute-to-opensource.json
+++ b/zh-cn/blog/dubbo-contribute-to-opensource.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, opensource",
"description": "本文将会以 dubbo 项目为例向你阐释,给开源项目做贡献并不是一件难事"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-copywriting-style.html b/zh-cn/blog/dubbo-copywriting-style.html
index 79c5d46..a68c6f3 100644
--- a/zh-cn/blog/dubbo-copywriting-style.html
+++ b/zh-cn/blog/dubbo-copywriting-style.html
@@ -393,4 +393,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-echo-test.html b/zh-cn/blog/dubbo-echo-test.html
index 0b25ea7..fd434e8 100644
--- a/zh-cn/blog/dubbo-echo-test.html
+++ b/zh-cn/blog/dubbo-echo-test.html
@@ -108,4 +108,4 @@ String status = echoService.$echo(<span class="hljs-string">"OK"</span>);
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-externalized-configuration.html b/zh-cn/blog/dubbo-externalized-configuration.html
index 0f00605..1e6d4dd 100644
--- a/zh-cn/blog/dubbo-externalized-configuration.html
+++ b/zh-cn/blog/dubbo-externalized-configuration.html
@@ -319,14 +319,14 @@ dubbo.registry.address=10.20.153.10:9090
}
</code></pre>
<h6>执行结果</h6>
-<pre><code>applicationBean.name = dubbo-demo-application
-moduleBean.name = dubbo-demo-module
-registryConfig.name = zookeeper://192.168.99.100:32770
-protocolConfig.name = dubbo
-protocolConfig.port = 20880
-monitorConfig.name = zookeeper://127.0.0.1:32770
-providerConfig.name = 127.0.0.1
-consumerConfig.name = netty
+<pre><code>applicationBean.name = dubbo-demo-application
+moduleBean.name = dubbo-demo-module
+registryConfig.name = zookeeper://192.168.99.100:32770
+protocolConfig.name = dubbo
+protocolConfig.port = 20880
+monitorConfig.name = zookeeper://127.0.0.1:32770
+providerConfig.name = 127.0.0.1
+consumerConfig.name = netty
</code></pre>
<p>不难发现,<code>@EnableDubboConfig</code> 配置 Bean 配合外部化文件 <code>classpath:/META-INF/config.properties</code>,与执行输出内容相同。</p>
<h5>多 Dubbo 配置 Bean 绑定</h5>
@@ -343,7 +343,7 @@ consumerConfig.name = netty
<span class="hljs-meta">@PropertySource</span>(<span class="hljs-string">"META-INF/multiple-config.properties"</span>)
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DubboMultipleConfiguration</span> </span>{
-}
+}
</code></pre>
<h6>实现引导类</h6>
<pre><code class="language-java"><span class="hljs-comment">/**
@@ -371,9 +371,9 @@ consumerConfig.name = netty
}
</code></pre>
<h6>执行结果</h6>
-<pre><code>applicationBean.name = dubbo-demo-application
-applicationBean2.name = dubbo-demo-application2
-applicationBean3.name = dubbo-demo-application3
+<pre><code>applicationBean.name = dubbo-demo-application
+applicationBean2.name = dubbo-demo-application2
+applicationBean3.name = dubbo-demo-application3
</code></pre>
<p><code>@EnableDubboConfig(multiple = true)</code> 执行后,运行结果说明<code>ApplicationConfig</code> Bean 以及 ID 的定义方式。</p>
<h3><code>@EnableDubboConfigBinding</code> & <code>@EnableDubboConfigBindings</code></h3>
@@ -475,7 +475,7 @@ applicationBean3.name = dubbo-demo-application3
<span class="hljs-meta">@PropertySource</span>(<span class="hljs-string">"META-INF/bindings.properties"</span>)
<span class="hljs-meta">@Configuration</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DubboConfiguration</span> </span>{
-
+
}
</code></pre>
<h5>实现引导类</h5>
@@ -516,11 +516,11 @@ applicationBean3.name = dubbo-demo-application3
</code></pre>
<h5>运行结果</h5>
<p><code>DubboConfigurationBootstrap</code> 运行后控制台输出:</p>
-<pre><code>applicationBean.name = dubbo-demo-application
-applicationBean2.name = dubbo-demo-application2
-applicationBean3.name = dubbo-demo-application3
-moduleBean.name = dubbo-demo-module
-registry.address = zookeeper://192.168.99.100:32770
+<pre><code>applicationBean.name = dubbo-demo-application
+applicationBean2.name = dubbo-demo-application2
+applicationBean3.name = dubbo-demo-application3
+moduleBean.name = dubbo-demo-module
+registry.address = zookeeper://192.168.99.100:32770
</code></pre>
<p>输出的内容与<code>classpath:/META-INF/bindings.properties</code> 绑定的内容一致,符合期望。</p>
</section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a href=" [...]
@@ -540,4 +540,4 @@ registry.address = zookeeper://192.168.99.100:32770
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-fescar.html b/zh-cn/blog/dubbo-fescar.html
index 341c15b..c1bbead 100644
--- a/zh-cn/blog/dubbo-fescar.html
+++ b/zh-cn/blog/dubbo-fescar.html
@@ -70,7 +70,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">StorageServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">StorageService</span> </span>{
<span class="hljs-keyword">private</span> StorageDAO storageDAO;
-
+
<span class="hljs-meta">@Override</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">deduct</span><span class="hljs-params">(String commodityCode, <span class="hljs-keyword">int</span> count)</span> </span>{
Storage storage = <span class="hljs-keyword">new</span> Storage();
@@ -212,4 +212,4 @@ sh fescar-server.sh 8091 /home/admin/fescar/data/
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-generic-invoke.html b/zh-cn/blog/dubbo-generic-invoke.html
index 78e651c..6e68b91 100644
--- a/zh-cn/blog/dubbo-generic-invoke.html
+++ b/zh-cn/blog/dubbo-generic-invoke.html
@@ -168,4 +168,4 @@ System.out.println(helloService.hello(<span class="hljs-string">"community"</spa
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-gracefully-shutdown.html b/zh-cn/blog/dubbo-gracefully-shutdown.html
index e61bdd3..ab66ef4 100644
--- a/zh-cn/blog/dubbo-gracefully-shutdown.html
+++ b/zh-cn/blog/dubbo-gracefully-shutdown.html
@@ -127,4 +127,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-heartbeat-design.html b/zh-cn/blog/dubbo-heartbeat-design.html
index e25ad26..093bd79 100644
--- a/zh-cn/blog/dubbo-heartbeat-design.html
+++ b/zh-cn/blog/dubbo-heartbeat-design.html
@@ -159,7 +159,7 @@
</ul>
<p>由于<strong>时间窗口的问题,死链不能够被及时检测出来,最坏情况为一个心跳周期</strong>。</p>
<p>为了解决上述问题,我们再倒回去看一下上面的 <code>startHeartbeatTimer()</code> 方法</p>
-<pre><code class="language-java"><span class="hljs-keyword">long</span> heartbeatTick = calculateLeastDuration(heartbeat);
+<pre><code class="language-java"><span class="hljs-keyword">long</span> heartbeatTick = calculateLeastDuration(heartbeat);
<span class="hljs-keyword">long</span> heartbeatTimeoutTick = calculateLeastDuration(heartbeatTimeout);
</code></pre>
<p>其中 <code>calculateLeastDuration</code> 根据心跳时间和超时时间分别计算出了一个 tick 时间,实际上就是将两个变量除以了 3,使得他们的值缩小,并传入了 <code>HashedWheelTimer</code> 的第二个参数之中</p>
@@ -355,4 +355,4 @@ heartbeatTimer.newTimeout(reconnectTimerTask, heartbeatTimeoutTick, TimeUnit.MIL
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-integrate-with-hystrix.html b/zh-cn/blog/dubbo-integrate-with-hystrix.html
index 3861b36..a6fccf9 100644
--- a/zh-cn/blog/dubbo-integrate-with-hystrix.html
+++ b/zh-cn/blog/dubbo-integrate-with-hystrix.html
@@ -195,4 +195,4 @@ public class HystrixCircuitBreakerConfiguration {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-integrate-with-hystrix.json b/zh-cn/blog/dubbo-integrate-with-hystrix.json
index e933517..c736cc4 100644
--- a/zh-cn/blog/dubbo-integrate-with-hystrix.json
+++ b/zh-cn/blog/dubbo-integrate-with-hystrix.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Spring, Hystrix",
"description": "本文介绍在spring应用里,怎么把Dubbo和Hystrix结合起来使用。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-invoke.html b/zh-cn/blog/dubbo-invoke.html
index af124e3..0f1fb23 100644
--- a/zh-cn/blog/dubbo-invoke.html
+++ b/zh-cn/blog/dubbo-invoke.html
@@ -154,7 +154,7 @@ callbackService.addListener(<span class="hljs-string">"foo.bar"</span>, <span cl
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">NotifyImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Notify</span></span>{
<span class="hljs-keyword">public</span> Map<Integer, String> ret = <span class="hljs-keyword">new</span> HashMap<Integer, String>();
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onreturn</span><span class="hljs-params">(String name, <span class="hljs-keyword">int</span> id)</span> </span>{
ret.put(id, name);
System.out.println(<span class="hljs-string">"onreturn: "</span> + name);
@@ -190,4 +190,4 @@ callbackService.addListener(<span class="hljs-string">"foo.bar"</span>, <span cl
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-k8s.html b/zh-cn/blog/dubbo-k8s.html
index 1d15f5f..eb02564 100644
--- a/zh-cn/blog/dubbo-k8s.html
+++ b/zh-cn/blog/dubbo-k8s.html
@@ -117,4 +117,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-loadbalance.html b/zh-cn/blog/dubbo-loadbalance.html
index a03dd4f..e76c572 100644
--- a/zh-cn/blog/dubbo-loadbalance.html
+++ b/zh-cn/blog/dubbo-loadbalance.html
@@ -248,4 +248,4 @@ public class DemoLoadBalance implements LoadBalance {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-local-call.html b/zh-cn/blog/dubbo-local-call.html
index e33b5af..342d9e3 100644
--- a/zh-cn/blog/dubbo-local-call.html
+++ b/zh-cn/blog/dubbo-local-call.html
@@ -82,4 +82,4 @@ Exception <span class="hljs-keyword">in</span> thread <span class="hljs-string">
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-local-call.json b/zh-cn/blog/dubbo-local-call.json
index f8b1550..dc1bb3a 100644
--- a/zh-cn/blog/dubbo-local-call.json
+++ b/zh-cn/blog/dubbo-local-call.json
@@ -3,4 +3,4 @@
"__html": "<h1>本地调用</h1>\n<h3>本地调用介绍</h3>\n<p>当一个应用既是一个服务的提供者,同时也是这个服务的消费者的时候,可以直接对本机提供的服务发起本地调用。从 <code>2.2.0</code> 版本开始,Dubbo 默认在本地以 <em>injvm</em> 的方式暴露服务,这样的话,在同一个进程里对这个服务的调用会优先走本地调用。</p>\n<p>与本地对象上方法调用不同的是,Dubbo 本地调用会经过 Filter 链,其中包括了 Consumer 端的 Filter 链以及 Provider 端的 Filter 链。通过这样的机制,本地消费者和其他消费者都是统一对待,统一监控,服务统一进行治理。</p>\n<p><img src=\"../../img/blog/dubbo-local-call-filter.png\" alt=\"filter-chain\"></p>\n<p>同时,相比于远程调用来说,Dubbo 本地调用性能较优,省去了请求、响应的编解码及网络传输的过程。</p>\n<p>要使用 Dubbo 本地 [...]
"link": "/zh-cn/blog/dubbo-local-call.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meet-arthas.html b/zh-cn/blog/dubbo-meet-arthas.html
index fd76230..7b1c069 100644
--- a/zh-cn/blog/dubbo-meet-arthas.html
+++ b/zh-cn/blog/dubbo-meet-arthas.html
@@ -32,7 +32,7 @@
<ul>
<li><a href="https://github.com/hengyunabc/dubbo-arthas-demo">https://github.com/hengyunabc/dubbo-arthas-demo</a></li>
</ul>
-<pre><code> /user/{id} -> UserService -> UserServiceImpl
+<pre><code> /user/{id} -> UserService -> UserServiceImpl
Browser Dubbo Client Dubbo Server
</code></pre>
<p>Client端:</p>
@@ -322,4 +322,4 @@ Location:
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meet-arthas.json b/zh-cn/blog/dubbo-meet-arthas.json
index 4ae9969..d00b163 100644
--- a/zh-cn/blog/dubbo-meet-arthas.json
+++ b/zh-cn/blog/dubbo-meet-arthas.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Arthas",
"description": "使用Alibaba开源的应用诊断利器Arthas来排查Dubbo应用的问题。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-beijing-may-12th-2018.html b/zh-cn/blog/dubbo-meetup-beijing-may-12th-2018.html
index c9bcae0..e53d3d5 100644
--- a/zh-cn/blog/dubbo-meetup-beijing-may-12th-2018.html
+++ b/zh-cn/blog/dubbo-meetup-beijing-may-12th-2018.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-chengdu.html b/zh-cn/blog/dubbo-meetup-chengdu.html
index 7deb714..7b3466e 100644
--- a/zh-cn/blog/dubbo-meetup-chengdu.html
+++ b/zh-cn/blog/dubbo-meetup-chengdu.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-hangzhou.html b/zh-cn/blog/dubbo-meetup-hangzhou.html
index bb5878b..2c6d6cf 100644
--- a/zh-cn/blog/dubbo-meetup-hangzhou.html
+++ b/zh-cn/blog/dubbo-meetup-hangzhou.html
@@ -40,4 +40,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html b/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
index 959ca04..c4ded17 100644
--- a/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
+++ b/zh-cn/blog/dubbo-meetup-shanghai-jun-23rd-2018.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-meetup-shenzhen.html b/zh-cn/blog/dubbo-meetup-shenzhen.html
index 1130d12..5677c12 100644
--- a/zh-cn/blog/dubbo-meetup-shenzhen.html
+++ b/zh-cn/blog/dubbo-meetup-shenzhen.html
@@ -37,4 +37,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-mesh-in-thinking.html b/zh-cn/blog/dubbo-mesh-in-thinking.html
index df9b3bd..f02d735 100644
--- a/zh-cn/blog/dubbo-mesh-in-thinking.html
+++ b/zh-cn/blog/dubbo-mesh-in-thinking.html
@@ -112,4 +112,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-mesh-service-mesh-exploring.html b/zh-cn/blog/dubbo-mesh-service-mesh-exploring.html
index 622254e..b310efa 100644
--- a/zh-cn/blog/dubbo-mesh-service-mesh-exploring.html
+++ b/zh-cn/blog/dubbo-mesh-service-mesh-exploring.html
@@ -144,4 +144,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-network-interfaces.html b/zh-cn/blog/dubbo-network-interfaces.html
index 313cd89..137508c 100644
--- a/zh-cn/blog/dubbo-network-interfaces.html
+++ b/zh-cn/blog/dubbo-network-interfaces.html
@@ -161,7 +161,7 @@ lo Link encap:Local Loopback
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
-
+
docker0 Link encap:Ethernet HWaddr 02:42:58:45:c1:15
inet addr:172.17.0.1 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
@@ -331,7 +331,7 @@ utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
inet6 fe80::7894:3abc:5abd:457d%utun1 prefixlen 64 scopeid 0xd
- nd6 options=201<PERFORMNUD,DAD>
+ nd6 options=201<PERFORMNUD,DAD>
</code></pre>
<p>内容很多,我挑几点差异简述下:</p>
<ul>
@@ -403,4 +403,4 @@ utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-new-async.html b/zh-cn/blog/dubbo-new-async.html
index df1c940..dc7498c 100644
--- a/zh-cn/blog/dubbo-new-async.html
+++ b/zh-cn/blog/dubbo-new-async.html
@@ -192,7 +192,7 @@ future.setCallback(<span class="hljs-keyword">new</span> ResponseCallback() {
ClassPathXmlApplicationContext context = <span class="hljs-keyword">new</span> ClassPathXmlApplicationContext(<span class="hljs-keyword">new</span> String[]{<span class="hljs-string">"META-INF/spring/async-consumer.xml"</span>});
context.start();
<span class="hljs-keyword">final</span> AsyncService asyncService = (AsyncService) context.getBean(<span class="hljs-string">"asyncService"</span>);
-
+
CompletableFuture<String> future = asyncService.sayHello(<span class="hljs-string">"async call request"</span>);
future.whenComplete((v, t) -> {
<span class="hljs-keyword">if</span> (t != <span class="hljs-keyword">null</span>) {
@@ -221,7 +221,7 @@ future.setCallback(<span class="hljs-keyword">new</span> ResponseCallback() {
<p>修改接口,增加重载方法</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">GreetingsService</span> </span>{
<span class="hljs-function">String <span class="hljs-title">sayHi</span><span class="hljs-params">(String name)</span></span>;
-
+
<span class="hljs-function"><span class="hljs-keyword">default</span> CompletableFuture<String> <span class="hljs-title">sayHi</span><span class="hljs-params">(String name, <span class="hljs-keyword">boolean</span> isAsync)</span> </span>{
<span class="hljs-keyword">return</span> CompletableFuture.completedFuture(sayHello(name));
}
@@ -264,7 +264,7 @@ future.setCallback(<span class="hljs-keyword">new</span> ResponseCallback() {
GreetingsService greetingsService = (GreetingsService) context.getBean(<span class="hljs-string">"greetingsService"</span>);
CompletableFuture<String> future = greetingsService.sayHi(<span class="hljs-string">"async call reqeust"</span>, <span class="hljs-keyword">true</span>);
System.out.println(<span class="hljs-string">"async call ret :"</span> + future.get());
-
+
System.in.read();
}
</code></pre>
@@ -328,7 +328,7 @@ future.setCallback(<span class="hljs-keyword">new</span> ResponseCallback() {
AsyncService asyncService = (AsyncService) context.getBean(<span class="hljs-string">"asyncService"</span>);
System.out.println(asyncService.sayHello(<span class="hljs-string">"async call request"</span>));
-
+
System.in.read();
}
</code></pre>
@@ -409,4 +409,4 @@ future.setCallback(<span class="hljs-keyword">new</span> ResponseCallback() {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-new-async.json b/zh-cn/blog/dubbo-new-async.json
index b5aba53..c5619ea 100644
--- a/zh-cn/blog/dubbo-new-async.json
+++ b/zh-cn/blog/dubbo-new-async.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, 异步, async chain",
"description": "本文回顾了 2.6.x 版本的异步实现,然后引出了 2.7.0 版本基于 CompletableFuture 的异步编程方式。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-protocol.html b/zh-cn/blog/dubbo-protocol.html
index 6b9ce05..0fc7f30 100644
--- a/zh-cn/blog/dubbo-protocol.html
+++ b/zh-cn/blog/dubbo-protocol.html
@@ -192,4 +192,4 @@ Service name bytes (换行符)
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-registry-nacos-integration.html b/zh-cn/blog/dubbo-registry-nacos-integration.html
index 50722f7..cbbcfc7 100644
--- a/zh-cn/blog/dubbo-registry-nacos-integration.html
+++ b/zh-cn/blog/dubbo-registry-nacos-integration.html
@@ -23,28 +23,28 @@
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
...
-
+
<span class="hljs-comment"><!-- Dubbo Nacos registry dependency --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>dubbo-registry-nacos<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>0.0.2<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
- <span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
-
+ <span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
+
<span class="hljs-comment"><!-- Keep latest Nacos client version --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.nacos<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>nacos-client<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>[0.6.1,)<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
-
+
<span class="hljs-comment"><!-- Dubbo dependency --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>dubbo<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">version</span>></span>2.6.5<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
-
+
<span class="hljs-comment"><!-- Alibaba Spring Context extension --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>com.alibaba.spring<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
@@ -53,7 +53,7 @@
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
...
-
+
<span class="hljs-tag"></<span class="hljs-name">dependencies</span>></span>
</code></pre>
<p>当项目中添加 <code>dubbo-registry-nacos</code> 后,您无需显示地编程实现服务发现和注册逻辑,实际实现由该三方包提供,接下来配置 Naocs 注册中心。</p>
@@ -88,10 +88,10 @@
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="hljs-attr">xmlns:dubbo</span>=<span class="hljs-string">"http://dubbo.apache.org/schema/dubbo"</span>
<span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
-
+
<span class="hljs-comment"><!-- 提供方应用信息,用于计算依赖关系 --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:application</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dubbo-provider-xml-demo"</span> /></span>
-
+
<span class="hljs-comment"><!-- 使用 Zookeeper 注册中心 --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"zookeeper://10.20.153.10:2181"</span> /></span>
...
@@ -103,10 +103,10 @@
<span class="hljs-attr">xmlns:xsi</span>=<span class="hljs-string">"http://www.w3.org/2001/XMLSchema-instance"</span>
<span class="hljs-attr">xmlns:dubbo</span>=<span class="hljs-string">"http://dubbo.apache.org/schema/dubbo"</span>
<span class="hljs-attr">xsi:schemaLocation</span>=<span class="hljs-string">"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"</span>></span>
-
+
<span class="hljs-comment"><!-- 提供方应用信息,用于计算依赖关系 --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:application</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dubbo-provider-xml-demo"</span> /></span>
-
+
<span class="hljs-comment"><!-- 使用 Nacos 注册中心 --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:registry</span> <span class="hljs-attr">address</span>=<span class="hljs-string">"nacos://10.20.153.10:8848"</span> /></span>
...
@@ -432,4 +432,4 @@ Service [name :null , port : 20883] sayName("小马哥(mercyblitz)"
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-registry-nacos-integration.json b/zh-cn/blog/dubbo-registry-nacos-integration.json
index ff5e39d..4a5ddd6 100644
--- a/zh-cn/blog/dubbo-registry-nacos-integration.json
+++ b/zh-cn/blog/dubbo-registry-nacos-integration.json
@@ -3,4 +3,4 @@
"__html": "<h1>Dubbo 融合 Nacos 成为注册中心</h1>\n<p>Nacos 作为 Dubbo 生态系统中重要的注册中心实现,其中 <a href=\"https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos\"><code>dubbo-registry-nacos</code></a> 则是 Dubbo 融合 Nacos 注册中心的实现。</p>\n<h2>预备工作</h2>\n<p>当您将 <a href=\"https://github.com/apache/dubbo/tree/master/dubbo-registry/dubbo-registry-nacos\"><code>dubbo-registry-nacos</code></a> 整合到您的 Dubbo 工程之前,请确保后台已经启动 Nacos 服务。如果您尚且不熟悉 Nacos 的基本使用的话,可先行参考 <a href=\"https://nacos.io/en-us [...]
"link": "/zh-cn/blog/dubbo-registry-nacos-integration.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-rest.html b/zh-cn/blog/dubbo-rest.html
index c30dbdb..fc39f4a 100644
--- a/zh-cn/blog/dubbo-rest.html
+++ b/zh-cn/blog/dubbo-rest.html
@@ -472,7 +472,7 @@ INFO: Starting ProtocolHandler [<span class="hljs-string">"http-nio-8080"</span>
<span class="hljs-tag"><<span class="hljs-name">swagger.version</span>></span>2.0.6<span class="hljs-tag"></<span class="hljs-name">swagger.version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">properties</span>></span>
- <span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>io.swagger.core.v3<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>swagger-jaxrs2<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
@@ -562,7 +562,7 @@ INFO: Starting ProtocolHandler [<span class="hljs-string">"http-nio-8080"</span>
<pre><code class="language-xml"> <span class="hljs-tag"><<span class="hljs-name">properties</span>></span>
<span class="hljs-tag"><<span class="hljs-name">swagger.webjar.version</span>></span>3.20.3<span class="hljs-tag"></<span class="hljs-name">swagger.webjar.version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">properties</span>></span>
- <span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
+ <span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.webjars<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>swagger-ui<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
@@ -668,4 +668,4 @@ INFO: Starting ProtocolHandler [<span class="hljs-string">"http-nio-8080"</span>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-stub-mock.html b/zh-cn/blog/dubbo-stub-mock.html
index 3daebf0..5d8a517 100644
--- a/zh-cn/blog/dubbo-stub-mock.html
+++ b/zh-cn/blog/dubbo-stub-mock.html
@@ -235,4 +235,4 @@ Caused by: org.apache.dubbo.remoting.TimeoutException: Waiting server-side respo
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-stub-mock.json b/zh-cn/blog/dubbo-stub-mock.json
index 9f489ab..a698e44 100644
--- a/zh-cn/blog/dubbo-stub-mock.json
+++ b/zh-cn/blog/dubbo-stub-mock.json
@@ -3,4 +3,4 @@
"__html": "<h1>本地存根和本地伪装</h1>\n<h2>基本概念</h2>\n<p>典型的 RPC 调用客户端是依赖并且只依赖接口编程来进行远程调用的。在真正发起远程调用之前,用户往往需要做一些预处理的工作,比如提前校验参数。在拿到返回调用结果之后,用户可能需要缓存结果,或者是在调用失败的时候构造容错数据,而不是简单的抛出异常。</p>\n<p>这个时候,用户可以编写出类似以下的代码来处理上面提出的这些场景:</p>\n<pre><code class=\"language-java\"><span class=\"hljs-keyword\">try</span> {\n preProcess();\n <span class=\"hljs-keyword\">return</span> service.invoke(...);\n} <span class=\"hljs-keyword\">catch</span> (Throwable e) {\n <span class=\"hljs-keyword\">return</spa [...]
"link": "/zh-cn/blog/dubbo-stub-mock.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo-zk.html b/zh-cn/blog/dubbo-zk.html
index ae3e29d..75c0597 100644
--- a/zh-cn/blog/dubbo-zk.html
+++ b/zh-cn/blog/dubbo-zk.html
@@ -174,7 +174,7 @@ JLine support is enabled
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">GreetingServiceConsumer</span> </span>{
<span class="hljs-meta">@Reference</span>
<span class="hljs-keyword">private</span> GreetingService greetingService;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">doSayHello</span><span class="hljs-params">(String name)</span> </span>{
<span class="hljs-keyword">return</span> greetingService.sayHello(name);
}
@@ -272,4 +272,4 @@ JLine support is enabled
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo2-js.html b/zh-cn/blog/dubbo2-js.html
index fd039d0..8c92185 100644
--- a/zh-cn/blog/dubbo2-js.html
+++ b/zh-cn/blog/dubbo2-js.html
@@ -240,4 +240,4 @@ demoService.sayHello(<span class="hljs-string">'kirito'</span>).then(<span class
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubbo2-js.json b/zh-cn/blog/dubbo2-js.json
index 928d3a3..b980376 100644
--- a/zh-cn/blog/dubbo2-js.json
+++ b/zh-cn/blog/dubbo2-js.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, 跨语言, Node, NodeJS, js",
"description": "本文介绍了如何使用 dubbo2.js 进行跨语言的 dubbo 调用。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/dubboAsync_client.html b/zh-cn/blog/dubboAsync_client.html
index 0890b6c..cca9b22 100644
--- a/zh-cn/blog/dubboAsync_client.html
+++ b/zh-cn/blog/dubboAsync_client.html
@@ -46,7 +46,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">NotifyImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Notify</span></span>{
<span class="hljs-keyword">public</span> Map<Integer, String> ret = <span class="hljs-keyword">new</span> HashMap<Integer, String>();
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onreturn</span><span class="hljs-params">(String name, <span class="hljs-keyword">int</span> id)</span> </span>{
ret.put(id, name);
System.out.println(<span class="hljs-string">"onreturn: "</span> + name);
@@ -99,4 +99,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/dubboAsync_server.html b/zh-cn/blog/dubboAsync_server.html
index cff2669..0007fcd 100644
--- a/zh-cn/blog/dubboAsync_server.html
+++ b/zh-cn/blog/dubboAsync_server.html
@@ -100,4 +100,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/first-dubbo-filter.html b/zh-cn/blog/first-dubbo-filter.html
index 53e605d..76f3808 100644
--- a/zh-cn/blog/first-dubbo-filter.html
+++ b/zh-cn/blog/first-dubbo-filter.html
@@ -24,7 +24,7 @@
}
<span class="hljs-keyword">return</span> buildInvokerChain(protocol.refer(type, url), Constants.REFERENCE_FILTER_KEY, Constants.CONSUMER);
}
-
+
<span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <T> <span class="hljs-function">Invoker<T> <span class="hljs-title">buildInvokerChain</span><span class="hljs-params">(<span class="hljs-keyword">final</span> Invoker<T> invoker, String key, String group)</span> </span>{
Invoker<T> last = invoker;
List<Filter> filters = ExtensionLoader.getExtensionLoader(Filter.class).getActivateExtension(invoker.getUrl(), key, group);
@@ -71,10 +71,10 @@
String value = url.getParameter(key);
<span class="hljs-keyword">return</span> getActivateExtension(url, value == <span class="hljs-keyword">null</span> || value.length() == <span class="hljs-number">0</span> ? <span class="hljs-keyword">null</span> : Constants.COMMA_SPLIT_PATTERN.split(value), group);
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> List<T> <span class="hljs-title">getActivateExtension</span><span class="hljs-params">(URL url, String[] values, String group)</span> </span>{
List<T> exts = <span class="hljs-keyword">new</span> ArrayList<T>();
-
+
List<String> names = values == <span class="hljs-keyword">null</span> ? <span class="hljs-keyword">new</span> ArrayList<String>(<span class="hljs-number">0</span>) : Arrays.asList(values);
<span class="hljs-keyword">if</span> (! names.contains(Constants.REMOVE_VALUE_PREFIX + Constants.DEFAULT_KEY)) {
@@ -84,7 +84,7 @@
Activate activate = entry.getValue();
<span class="hljs-keyword">if</span> (isMatchGroup(group, activate.group())) {
T ext = getExtension(name);
- <span class="hljs-keyword">if</span> (! names.contains(name) && ! names.contains(Constants.REMOVE_VALUE_PREFIX + name)
+ <span class="hljs-keyword">if</span> (! names.contains(name) && ! names.contains(Constants.REMOVE_VALUE_PREFIX + name)
&& isActive(activate, url)) {
exts.add(ext);
}
@@ -122,7 +122,7 @@
.setInvoker(invoker)
.setInvocation(invocation)
.setLocalAddress(NetUtils.getLocalHost(), <span class="hljs-number">0</span>)
- .setRemoteAddress(invoker.getUrl().getHost(),
+ .setRemoteAddress(invoker.getUrl().getHost(),
invoker.getUrl().getPort());
<span class="hljs-keyword">if</span> (invocation <span class="hljs-keyword">instanceof</span> RpcInvocation) {
((RpcInvocation)invocation).setInvoker(invoker);
@@ -197,4 +197,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/gsoc-2018.html b/zh-cn/blog/gsoc-2018.html
index af95399..a297b78 100644
--- a/zh-cn/blog/gsoc-2018.html
+++ b/zh-cn/blog/gsoc-2018.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/how-to-involve-dubbo-community.html b/zh-cn/blog/how-to-involve-dubbo-community.html
index d58bd1c..66ef97b 100644
--- a/zh-cn/blog/how-to-involve-dubbo-community.html
+++ b/zh-cn/blog/how-to-involve-dubbo-community.html
@@ -104,4 +104,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/how-to-involve-dubbo-community.json b/zh-cn/blog/how-to-involve-dubbo-community.json
index c55c02e..fef6f53 100644
--- a/zh-cn/blog/how-to-involve-dubbo-community.json
+++ b/zh-cn/blog/how-to-involve-dubbo-community.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Apache Way",
"description": "本文介绍了如何以Apache Way的方式参与Dubbo社区并做贡献"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/index.html b/zh-cn/blog/index.html
index dd41497..ff44481 100644
--- a/zh-cn/blog/index.html
+++ b/zh-cn/blog/index.html
@@ -29,4 +29,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/introduction-to-dubbo-qos.html b/zh-cn/blog/introduction-to-dubbo-qos.html
index 84a8a72..b71f829 100644
--- a/zh-cn/blog/introduction-to-dubbo-qos.html
+++ b/zh-cn/blog/introduction-to-dubbo-qos.html
@@ -242,4 +242,4 @@ dubbo.application.qosAcceptForeignIp=false
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/introduction-to-dubbo-spi-2.html b/zh-cn/blog/introduction-to-dubbo-spi-2.html
index 17c4588..aaaf5d4 100644
--- a/zh-cn/blog/introduction-to-dubbo-spi-2.html
+++ b/zh-cn/blog/introduction-to-dubbo-spi-2.html
@@ -51,7 +51,7 @@ ExtensionLoader 的方法比较多,比较常用的方法有:</p>
}
<span class="hljs-keyword">return</span> loader;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">ExtensionLoader</span><span class="hljs-params">(Class<?> type)</span> </span>{
<span class="hljs-keyword">this</span>.type = type;
objectFactory = (type == ExtensionFactory.class ? <span class="hljs-keyword">null</span> : ExtensionLoader.getExtensionLoader(ExtensionFactory.class).getAdaptiveExtension());
@@ -84,7 +84,7 @@ ExtensionLoader 的方法比较多,比较常用的方法有:</p>
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">private</span> T <span class="hljs-title">createExtension</span><span class="hljs-params">(String name)</span> </span>{
<span class="hljs-comment">// 根据扩展点名称得到扩展类,比如对于LoadBalance,根据random得到RandomLoadBalance类</span>
Class<?> clazz = getExtensionClasses().get(name);
-
+
T instance = (T) EXTENSION_INSTANCES.get(clazz);
<span class="hljs-keyword">if</span> (instance == <span class="hljs-keyword">null</span>) {
<span class="hljs-comment">// 使用反射调用nesInstance来创建扩展类的一个示例</span>
@@ -173,7 +173,7 @@ ExtensionLoader 的方法比较多,比较常用的方法有:</p>
&& method.getParameterTypes().length == <span class="hljs-number">1</span>
&& Modifier.isPublic(method.getModifiers())) {
Class<?> pt = method.getParameterTypes()[<span class="hljs-number">0</span>];
-
+
String property = method.getName().length() > <span class="hljs-number">3</span> ? method.getName().substring(<span class="hljs-number">3</span>, <span class="hljs-number">4</span>).toLowerCase() + method.getName().substring(<span class="hljs-number">4</span>) : <span class="hljs-string">""</span>;
Object object = objectFactory.getExtension(pt, property);
<span class="hljs-keyword">if</span> (object != <span class="hljs-keyword">null</span>) {
@@ -247,8 +247,8 @@ listener=org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper
mock=org.apache.dubbo.rpc.support.MockProtocol
</code></pre>
<p>在Dubbo加载扩展配置文件时,有一段如下的代码:</p>
-<pre><code class="language-java"><span class="hljs-keyword">try</span> {
- clazz.getConstructor(type);
+<pre><code class="language-java"><span class="hljs-keyword">try</span> {
+ clazz.getConstructor(type);
Set<Class<?>> wrappers = cachedWrapperClasses;
<span class="hljs-keyword">if</span> (wrappers == <span class="hljs-keyword">null</span>) {
cachedWrapperClasses = <span class="hljs-keyword">new</span> ConcurrentHashSet<Class<?>>();
@@ -284,16 +284,16 @@ ProtocolFilterWrapper代码如下:</p>
instance = cachedAdaptiveInstance.get();
<span class="hljs-keyword">if</span> (instance == <span class="hljs-keyword">null</span>) {
instance = createAdaptiveExtension();
- cachedAdaptiveInstance.set(instance);
+ cachedAdaptiveInstance.set(instance);
}
- }
+ }
}
<span class="hljs-keyword">return</span> (T) instance;
}
</code></pre>
<p>继续看createAdaptiveExtension方法</p>
-<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">private</span> T <span class="hljs-title">createAdaptiveExtension</span><span class="hljs-params">()</span> </span>{
+<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">private</span> T <span class="hljs-title">createAdaptiveExtension</span><span class="hljs-params">()</span> </span>{
<span class="hljs-keyword">return</span> injectExtension((T) getAdaptiveExtensionClass().newInstance());
}
</code></pre>
@@ -392,4 +392,4 @@ ProtocolFilterWrapper代码如下:</p>
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/introduction-to-dubbo-spi.html b/zh-cn/blog/introduction-to-dubbo-spi.html
index 8b213c8..2ee13fc 100644
--- a/zh-cn/blog/introduction-to-dubbo-spi.html
+++ b/zh-cn/blog/introduction-to-dubbo-spi.html
@@ -214,4 +214,4 @@ consistenthash=com.alibaba.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalan
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/introduction-to-dubbo-url.html b/zh-cn/blog/introduction-to-dubbo-url.html
index 3e1bfd6..b8044da 100644
--- a/zh-cn/blog/introduction-to-dubbo-url.html
+++ b/zh-cn/blog/introduction-to-dubbo-url.html
@@ -59,7 +59,7 @@ url protocol = null, url host = home, url path = user1/router.js
<li>parameters:参数键值对</li>
</ul>
<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">URL</span><span class="hljs-params">(String protocol, String username, String password, String host, <span class="hljs-keyword">int</span> port, String path, Map<String, String> parameters)</span> </span>{
- <span class="hljs-keyword">if</span> ((username == <span class="hljs-keyword">null</span> || username.length() == <span class="hljs-number">0</span>)
+ <span class="hljs-keyword">if</span> ((username == <span class="hljs-keyword">null</span> || username.length() == <span class="hljs-number">0</span>)
&& password != <span class="hljs-keyword">null</span> && password.length() > <span class="hljs-number">0</span>) {
<span class="hljs-keyword">throw</span> <span class="hljs-keyword">new</span> IllegalArgumentException(<span class="hljs-string">"Invalid url, password without username!"</span>);
}
@@ -119,11 +119,11 @@ consumer://30.5.120.217/org.apache.dubbo.demo.DemoService?application=demo-consu
<h3>URL 统一模型的意义</h3>
<p>对于 dubbo 中的 URL,有人理解为配置总线,有人理解为统一配置模型,说法虽然不同,但都是在表达一个意思,这样的 URL 在 dubbo 中被当做是<a href="http://dubbo.apache.org/zh-cn/docs/dev/contract.html">公共契约</a>,所有扩展点参数都包含 URL 参数,URL 作为上下文信息贯穿整个扩展点设计体系。</p>
<p>在没有 URL 之前,只能以字符串传递参数,不停的解析和拼装,导致相同类型的接口,参数时而 Map, 时而 Parameters 类包装:</p>
-<pre><code class="language-java">export(String url)
+<pre><code class="language-java">export(String url)
createExporter(String host, <span class="hljs-keyword">int</span> port, Parameters params)
</code></pre>
<p>使用 URL 一致性模型:</p>
-<pre><code class="language-java">export(URL url)
+<pre><code class="language-java">export(URL url)
createExporter(URL url)
</code></pre>
<p>在最新的 dubbo 代码中,我们可以看到大量使用 URL 来进行上下文之间信息的传递,这样的好处是显而易见的:</p>
@@ -150,4 +150,4 @@ createExporter(URL url)
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/introduction-to-dubbo-url.json b/zh-cn/blog/introduction-to-dubbo-url.json
index 9bf1f5d..bb26bd9 100644
--- a/zh-cn/blog/introduction-to-dubbo-url.json
+++ b/zh-cn/blog/introduction-to-dubbo-url.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, URL",
"description": "URL 是 Dubbo 种一个重要的领域模型,了解它可以更加轻松的理解 Dubbo 的设计理念。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/meet-dubbo.html b/zh-cn/blog/meet-dubbo.html
index f1c4746..70b6fc9 100644
--- a/zh-cn/blog/meet-dubbo.html
+++ b/zh-cn/blog/meet-dubbo.html
@@ -65,4 +65,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/optimization-branch-prediction.html b/zh-cn/blog/optimization-branch-prediction.html
index ef19639..ed60b3a 100644
--- a/zh-cn/blog/optimization-branch-prediction.html
+++ b/zh-cn/blog/optimization-branch-prediction.html
@@ -148,4 +148,4 @@ TestBenchMarks.benchSiwtch 1000000 thrpt 100 576.745 ± 6.806 ops/s
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/optimization-branch-prediction.json b/zh-cn/blog/optimization-branch-prediction.json
index 1263be5..8c085bf 100644
--- a/zh-cn/blog/optimization-branch-prediction.json
+++ b/zh-cn/blog/optimization-branch-prediction.json
@@ -5,4 +5,4 @@
"meta": {
"title": "提前if判断帮助CPU分支预测"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/pinpoint.html b/zh-cn/blog/pinpoint.html
index abcb231..7f037b2 100644
--- a/zh-cn/blog/pinpoint.html
+++ b/zh-cn/blog/pinpoint.html
@@ -408,4 +408,4 @@ public interface HelloService {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/prepare-an-apache-release.html b/zh-cn/blog/prepare-an-apache-release.html
index 1dfedc3..a1cd33e 100644
--- a/zh-cn/blog/prepare-an-apache-release.html
+++ b/zh-cn/blog/prepare-an-apache-release.html
@@ -50,7 +50,7 @@ Please specify how long the key should be valid.
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
-Key is valid for? (0)
+Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
@@ -293,8 +293,8 @@ The vote will be open for at least 72 hours or until necessary number of votes a
Please vote accordingly:
-[ ] +1 approve
-[ ] +0 no opinion
+[ ] +1 approve
+[ ] +0 no opinion
[ ] -1 disapprove with the reason
Thanks,
@@ -435,4 +435,4 @@ Apache Dubbo is an effort undergoing incubation at The Apache Software Foundatio
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/prepare-an-apache-release.json b/zh-cn/blog/prepare-an-apache-release.json
index 81bdc56..91cada8 100644
--- a/zh-cn/blog/prepare-an-apache-release.json
+++ b/zh-cn/blog/prepare-an-apache-release.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Apache, Release",
"description": "本文介绍了Apache如何发布内容和流程"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/qcon-beijing-2018.html b/zh-cn/blog/qcon-beijing-2018.html
index da7400e..34d0ed2 100644
--- a/zh-cn/blog/qcon-beijing-2018.html
+++ b/zh-cn/blog/qcon-beijing-2018.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/sentinel-introduction-for-dubbo.html b/zh-cn/blog/sentinel-introduction-for-dubbo.html
index 5e61ffa..412a864 100644
--- a/zh-cn/blog/sentinel-introduction-for-dubbo.html
+++ b/zh-cn/blog/sentinel-introduction-for-dubbo.html
@@ -134,4 +134,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/sentinel-introduction-for-dubbo.json b/zh-cn/blog/sentinel-introduction-for-dubbo.json
index 4483c1c..5273313 100644
--- a/zh-cn/blog/sentinel-introduction-for-dubbo.json
+++ b/zh-cn/blog/sentinel-introduction-for-dubbo.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Sentinel, 限流, 熔断",
"description": "本文主要介绍了面向分布式服务架构的轻量级流量控制组件 Sentinel 以及在 Dubbo 中整合使用 Sentinel 的最佳实践。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/service-and-version.html b/zh-cn/blog/service-and-version.html
index 50393c0..45f26c0 100644
--- a/zh-cn/blog/service-and-version.html
+++ b/zh-cn/blog/service-and-version.html
@@ -65,7 +65,7 @@
<li>然后将剩下的一半提供者升级为新版本</li>
</ol>
<p>老版本服务提供者配置:</p>
-<pre><code><dubbo:service interface="com.foo.BarService" version="1.0.0" />
+<pre><code><dubbo:service interface="com.foo.BarService" version="1.0.0" />
</code></pre>
<p>新版本服务提供者配置:</p>
<pre><code><dubbo:service interface="com.foo.BarService" version="2.0.0" />
@@ -77,7 +77,7 @@
<pre><code><dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />
</code></pre>
<p>如果不需要区分版本,可以按照以下的方式配置:</p>
-<pre><code><dubbo:reference id="barService" interface="com.foo.BarService" version="*" />
+<pre><code><dubbo:reference id="barService" interface="com.foo.BarService" version="*" />
</code></pre>
<h3>分组聚合</h3>
<p>按组合并返回结果,比如菜单服务,接口一样,但有多种实现,用group区分,现在消费方需从每种group中调用一次返回结果,合并结果返回,这样就可以实现聚合菜单项。</p>
@@ -106,7 +106,7 @@
<p>指定合并方法,将调用返回结果的指定方法进行合并,合并方法的参数类型必须是返回结果类型本身</p>
<pre><code><dubbo:reference interface="com.xxx.MenuService" group="*">
<dubbo:method name="getMenuItems" merger=".addAll" />
-</dubbo:service>
+</dubbo:service>
</code></pre>
<h4>实现原理</h4>
<p>如果配置了merge,Dubbo会分别调用多个组别的服务提供者,然后把结果聚合,返回给消费端,具体的实现在<code>MergeableClusterInvoker.java</code>里:</p>
@@ -152,8 +152,8 @@
<span class="hljs-keyword">try</span> {
Result r = future.get(timeout, TimeUnit.MILLISECONDS);
<span class="hljs-keyword">if</span> (r.hasException()) {
- log.error(<span class="hljs-string">"Invoke "</span> + getGroupDescFromServiceKey(entry.getKey()) +
- <span class="hljs-string">" failed: "</span> + r.getException().getMessage(),
+ log.error(<span class="hljs-string">"Invoke "</span> + getGroupDescFromServiceKey(entry.getKey()) +
+ <span class="hljs-string">" failed: "</span> + r.getException().getMessage(),
r.getException());
} <span class="hljs-keyword">else</span> {
resultList.add(r);
@@ -210,4 +210,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/service-test.html b/zh-cn/blog/service-test.html
index 9764a01..c27bf5d 100644
--- a/zh-cn/blog/service-test.html
+++ b/zh-cn/blog/service-test.html
@@ -176,4 +176,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html
index 7fc94ac..59b87fe 100644
--- a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html
+++ b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.html
@@ -217,4 +217,4 @@ run:<span class="hljs-number">929</span>, AbstractApplicationContext$<span class
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json
index a6a1a92..181862a 100644
--- a/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json
+++ b/zh-cn/blog/spring-boot-dubbo-start-stop-analysis.json
@@ -7,4 +7,4 @@
"keywords": "Dubbo, Spring Boot, 源码分析",
"description": "本文分析 `dubbo-spring-boot-project` 中 Dubbo 启停源码的实现原理。"
}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/blog/test-verification.html b/zh-cn/blog/test-verification.html
index cb39134..506a4af 100644
--- a/zh-cn/blog/test-verification.html
+++ b/zh-cn/blog/test-verification.html
@@ -45,13 +45,13 @@
</code></pre>
<p>代码:</p>
<pre><code>// 远程服务引用
-MemberService memberService = ctx.getBean("memberService");
-
+MemberService memberService = ctx.getBean("memberService");
+
EchoService echoService = (EchoService) memberService; // 强制转型为EchoService
// 回声测试可用性
-String status = echoService.$echo("OK");
-
+String status = echoService.$echo("OK");
+
assert(status.equals("OK"));
</code></pre>
<h4>实现原理</h4>
@@ -108,4 +108,4 @@ assert(status.equals("OK"));
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/tracing-with-skywalking.html b/zh-cn/blog/tracing-with-skywalking.html
index 583290c..551b87b 100644
--- a/zh-cn/blog/tracing-with-skywalking.html
+++ b/zh-cn/blog/tracing-with-skywalking.html
@@ -93,7 +93,7 @@ public class ConsumerController {
<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-provider -Dskywalking.collector.servers=localhost:10800 dubbo-provider/target/dubbo-provider.jar
</code></pre>
<h4>启动服务消费端</h4>
-<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
+<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
</code></pre>
<h4>访问消费端提供的服务</h4>
<pre><code>curl http://localhost:8080/sayHello/test
@@ -135,4 +135,4 @@ public class ConsumerController {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/use-zipkin-in-dubbo.html b/zh-cn/blog/use-zipkin-in-dubbo.html
index 28f9503..0d66651 100644
--- a/zh-cn/blog/use-zipkin-in-dubbo.html
+++ b/zh-cn/blog/use-zipkin-in-dubbo.html
@@ -100,7 +100,7 @@ o.s.b.w.e.u.UndertowServletWebServer : Undertow started on port(s) 9411 (htt
<span class="hljs-tag"><<span class="hljs-name">type</span>></span>pom<span class="hljs-tag"></<span class="hljs-name">type</span>></span>
<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>import<span class="hljs-tag"></<span class="hljs-name">scope</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
-
+
<span class="hljs-comment"><!-- 引入 zipkin repoter 的 BOM 文件 --></span>
<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>io.zipkin.reporter2<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
@@ -356,10 +356,10 @@ o.s.b.w.e.u.UndertowServletWebServer : Undertow started on port(s) 9411 (htt
<span class="hljs-comment"><!-- 3. 使用 Dubbo 原生协议在 20881 端口上暴露服务 --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"dubbo"</span> <span class="hljs-attr">port</span>=<span class="hljs-string">"20881"</span>/></span>
-
+
<span class="hljs-comment"><!-- 4. 声明 HelloService 的远程代理,并在 Dubbo 的 filter chain 中增加 tracing filter --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"helloService"</span> <span class="hljs-attr">check</span>=<span class="hljs-string">"false"</span> <span class="hljs-attr">interface</span>=<span class="hljs-string">"com.alibaba.dubbo.samples.api.HelloService"</span> <span class="hljs-attr">filter</span>=<span class="hljs-string">"tracing"</span>/></span>
-
+
<span class="hljs-comment"><!-- 5. 将 GreetingServiceImpl 的实现声明成一个 spring bean,并将 HelloService 的远程代理装配进去 --></span>
<span class="hljs-tag"><<span class="hljs-name">bean</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"greetingService"</span> <span class="hljs-attr">class</span>=<span class="hljs-string">"com.alibaba.dubbo.samples.service.greeting.GreetingServiceImpl"</span>></span>
<span class="hljs-tag"><<span class="hljs-name">property</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"helloService"</span> <span class="hljs-attr">ref</span>=<span class="hljs-string">"helloService"</span>/></span>
@@ -535,4 +535,4 @@ $ java -jar zipkin.jar
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/community/index.html b/zh-cn/community/index.html
index 55e3922..dd626a3 100644
--- a/zh-cn/community/index.html
+++ b/zh-cn/community/index.html
@@ -29,4 +29,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/README.html b/zh-cn/docs/admin/README.html
index 2df13a8..e6a0c44 100644
--- a/zh-cn/docs/admin/README.html
+++ b/zh-cn/docs/admin/README.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/SUMMARY.html b/zh-cn/docs/admin/SUMMARY.html
index 7ca01d8..cb3843b 100644
--- a/zh-cn/docs/admin/SUMMARY.html
+++ b/zh-cn/docs/admin/SUMMARY.html
@@ -38,4 +38,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/admin-console.html b/zh-cn/docs/admin/install/admin-console.html
index 940b6be..a02f1f9 100644
--- a/zh-cn/docs/admin/install/admin-console.html
+++ b/zh-cn/docs/admin/install/admin-console.html
@@ -58,4 +58,4 @@ dubbo.registry.address=zookeeper://127.0.0.1:2181
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/admin-console.json b/zh-cn/docs/admin/install/admin-console.json
index b1ef51c..a5b6c4f 100644
--- a/zh-cn/docs/admin/install/admin-console.json
+++ b/zh-cn/docs/admin/install/admin-console.json
@@ -3,4 +3,4 @@
"__html": "<h3>管理控制台安装</h3>\n<p>目前版本的管理控制台正在开发中,已经完成了服务查询和服务治理的功能,采用前后端分离的模式,具体的安装和使用步骤如下:</p>\n<p>安装:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo-admin.git /var/tmp/dubbo-admin\n<span class=\"hljs-built_in\">cd</span> /var/tmp/dubbo-admin\nmvn clean package\n</code></pre>\n<p>配置 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-sh\">配置文件为:\ndubbo-admin-back [...]
"link": "/zh-cn/docs/admin/install/admin-console.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/consumer-demo.html b/zh-cn/docs/admin/install/consumer-demo.html
index 016d5ac..a9fb2c0 100644
--- a/zh-cn/docs/admin/install/consumer-demo.html
+++ b/zh-cn/docs/admin/install/consumer-demo.html
@@ -41,4 +41,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/consumer-demo.json b/zh-cn/docs/admin/install/consumer-demo.json
index e62100a..bd1bfe5 100644
--- a/zh-cn/docs/admin/install/consumer-demo.json
+++ b/zh-cn/docs/admin/install/consumer-demo.json
@@ -3,4 +3,4 @@
"__html": "<h1>示例消费者安装</h1>\n<p>安装:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo.git\n<span class=\"hljs-built_in\">cd</span> dubbo\n运行 dubbo-demo-consumer中的org.apache.dubbo.demo.consumer.Consumer\n请确保先启动Provider\n如果使用Intellij Idea 请加上-Djava.net.preferIPv4Stack=<span class=\"hljs-literal\">true</span>\n</code></pre>\n<p>配置:</p>\n<pre><code class=\"language-sh\">resource/META-INFO.spring/dubbo-demo-consumer.xml\n修改其 [...]
"link": "/zh-cn/docs/admin/install/consumer-demo.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/introduction.html b/zh-cn/docs/admin/install/introduction.html
index 33b7f5a..b9fe03d 100644
--- a/zh-cn/docs/admin/install/introduction.html
+++ b/zh-cn/docs/admin/install/introduction.html
@@ -42,4 +42,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/provider-demo.html b/zh-cn/docs/admin/install/provider-demo.html
index 698c5d9..0d87edd 100644
--- a/zh-cn/docs/admin/install/provider-demo.html
+++ b/zh-cn/docs/admin/install/provider-demo.html
@@ -40,4 +40,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/provider-demo.json b/zh-cn/docs/admin/install/provider-demo.json
index e2ae02b..aab9c6a 100644
--- a/zh-cn/docs/admin/install/provider-demo.json
+++ b/zh-cn/docs/admin/install/provider-demo.json
@@ -3,4 +3,4 @@
"__html": "<h1>示例提供者安装</h1>\n<p>安装:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo.git\n<span class=\"hljs-built_in\">cd</span> dubbo\n运行 dubbo-demo-provider中的org.apache.dubbo.demo.provider.Provider\n如果使用Intellij Idea 请加上-Djava.net.preferIPv4Stack=<span class=\"hljs-literal\">true</span>\n</code></pre>\n<p>配置:</p>\n<pre><code class=\"language-sh\">resource/META-INFO.spring/dubbo-demo-provider.xml\n修改其中的dubbo:registry [...]
"link": "/zh-cn/docs/admin/install/provider-demo.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/redis.html b/zh-cn/docs/admin/install/redis.html
index df03a06..43b7835 100644
--- a/zh-cn/docs/admin/install/redis.html
+++ b/zh-cn/docs/admin/install/redis.html
@@ -69,4 +69,4 @@ hgetall /dubbo/com.foo.BarService/providers
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/simple-monitor-center.html b/zh-cn/docs/admin/install/simple-monitor-center.html
index c5c461e..c72b4fc 100644
--- a/zh-cn/docs/admin/install/simple-monitor-center.html
+++ b/zh-cn/docs/admin/install/simple-monitor-center.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/simple-registry-center.html b/zh-cn/docs/admin/install/simple-registry-center.html
index ec2336d..063356a 100644
--- a/zh-cn/docs/admin/install/simple-registry-center.html
+++ b/zh-cn/docs/admin/install/simple-registry-center.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/install/zookeeper.html b/zh-cn/docs/admin/install/zookeeper.html
index d37bcb9..e66a719 100644
--- a/zh-cn/docs/admin/install/zookeeper.html
+++ b/zh-cn/docs/admin/install/zookeeper.html
@@ -98,4 +98,4 @@ dump
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/introduction.html b/zh-cn/docs/admin/introduction.html
index a40155e..68e481c 100644
--- a/zh-cn/docs/admin/introduction.html
+++ b/zh-cn/docs/admin/introduction.html
@@ -32,15 +32,15 @@ java -jar dubbo-admin-0.1.jar
<ul>
<li>前端</li>
</ul>
-<pre><code class="language-sh"><span class="hljs-built_in">cd</span> dubbo-admin-ui
-npm run install
-npm run dev
+<pre><code class="language-sh"><span class="hljs-built_in">cd</span> dubbo-admin-ui
+npm run install
+npm run dev
</code></pre>
<ul>
<li>后端</li>
</ul>
<pre><code class="language-sh"><span class="hljs-built_in">cd</span> dubbo-admin-server
-mvn clean package
+mvn clean package
<span class="hljs-built_in">cd</span> target
java -jar dubbo-admin-server-0.1.jar
</code></pre>
@@ -92,4 +92,4 @@ java -jar dubbo-admin-server-0.1.jar
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/introduction.json b/zh-cn/docs/admin/introduction.json
index e10def5..712d267 100644
--- a/zh-cn/docs/admin/introduction.json
+++ b/zh-cn/docs/admin/introduction.json
@@ -3,4 +3,4 @@
"__html": "<h1>Dubbo管理控制台介绍</h1>\n<p>目前的管理控制台已经发布0.1版本,结构上采取了前后端分离的方式,前端使用Vue和Vuetify分别作为Javascript框架和UI框架,后端采用Spring Boot框架。既可以按照标准的Maven方式进行打包,部署,也可以采用前后端分离的部署方式,方便开发,功能上,目前具备了服务查询,服务治理(包括Dubbo2.7中新增的治理规则)以及服务测试三部分内容。</p>\n<h3>Maven方式部署</h3>\n<ul>\n<li>安装</li>\n</ul>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo-admin.git\n<span class=\"hljs-built_in\">cd</span> dubbo-admin\nmvn clean package\n<span class=\"hljs-built [...]
"link": "/zh-cn/docs/admin/introduction.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/admin/ops/dubbo-ops.html b/zh-cn/docs/admin/ops/dubbo-ops.html
index f0a438d..81cb39f 100644
--- a/zh-cn/docs/admin/ops/dubbo-ops.html
+++ b/zh-cn/docs/admin/ops/dubbo-ops.html
@@ -42,4 +42,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/ops/introduction.html b/zh-cn/docs/admin/ops/introduction.html
index 67bd472..bfca035 100644
--- a/zh-cn/docs/admin/ops/introduction.html
+++ b/zh-cn/docs/admin/ops/introduction.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/ops/pinpoint.html b/zh-cn/docs/admin/ops/pinpoint.html
index fe698ac..ece2ea8 100644
--- a/zh-cn/docs/admin/ops/pinpoint.html
+++ b/zh-cn/docs/admin/ops/pinpoint.html
@@ -408,4 +408,4 @@ public interface HelloService {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/ops/skywalking.html b/zh-cn/docs/admin/ops/skywalking.html
index c78fde0..9288401 100644
--- a/zh-cn/docs/admin/ops/skywalking.html
+++ b/zh-cn/docs/admin/ops/skywalking.html
@@ -93,7 +93,7 @@ public class ConsumerController {
<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-provider -Dskywalking.collector.servers=localhost:10800 dubbo-provider/target/dubbo-provider.jar
</code></pre>
<h4>启动服务消费端</h4>
-<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
+<pre><code>java -jar -javaagent:$AGENT_PATH/skywalking-agent.jar -Dskywalking.agent.application_code=dubbo-consumer -Dskywalking.collector.servers=localhost:10800 dubbo-consumer/target/dubbo-consumer.jar
</code></pre>
<h4>访问消费端提供的服务</h4>
<pre><code>curl http://localhost:8080/sayHello/test
@@ -135,4 +135,4 @@ public class ConsumerController {
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/serviceGovernance.html b/zh-cn/docs/admin/serviceGovernance.html
index 1d29d9f..2e11037 100644
--- a/zh-cn/docs/admin/serviceGovernance.html
+++ b/zh-cn/docs/admin/serviceGovernance.html
@@ -65,4 +65,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/serviceSearch.html b/zh-cn/docs/admin/serviceSearch.html
index f774be3..6a1e7b7 100644
--- a/zh-cn/docs/admin/serviceSearch.html
+++ b/zh-cn/docs/admin/serviceSearch.html
@@ -34,4 +34,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/admin/serviceTest.html b/zh-cn/docs/admin/serviceTest.html
index 406ac28..c634c0a 100644
--- a/zh-cn/docs/admin/serviceTest.html
+++ b/zh-cn/docs/admin/serviceTest.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/README.html b/zh-cn/docs/dev/README.html
index 9bab842..8ebcd4e 100644
--- a/zh-cn/docs/dev/README.html
+++ b/zh-cn/docs/dev/README.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/SPI.html b/zh-cn/docs/dev/SPI.html
index 2463913..ddd17bb 100644
--- a/zh-cn/docs/dev/SPI.html
+++ b/zh-cn/docs/dev/SPI.html
@@ -30,10 +30,10 @@
</code></pre>
<p>实现类内容 <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.alibaba.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Protocol;
-
-<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocol</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
+
+<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocol</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
<span class="hljs-comment">// ...</span>
}
</code></pre>
@@ -46,21 +46,21 @@
<p>自动包装扩展点的 Wrapper 类。<code>ExtensionLoader</code> 在加载扩展点时,如果加载到的扩展点有拷贝构造函数,则判定为扩展点 Wrapper 类。</p>
<p>Wrapper类内容:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.alibaba.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Protocol;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocolWrapper</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
Protocol impl;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxProtocolWrapper</span><span class="hljs-params">(Protocol protocol)</span> </span>{ impl = protocol; }
-
+
<span class="hljs-comment">// 接口方法做一个操作后,再调用extension的方法</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">refer</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">//... 一些操作</span>
impl.refer();
<span class="hljs-comment">// ... 一些操作</span>
}
-
+
<span class="hljs-comment">// ...</span>
}
</code></pre>
@@ -74,7 +74,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">CarMaker</span> </span>{
<span class="hljs-function">Car <span class="hljs-title">makeCar</span><span class="hljs-params">()</span></span>;
}
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">WheelMaker</span> </span>{
<span class="hljs-function">Wheel <span class="hljs-title">makeWheel</span><span class="hljs-params">()</span></span>;
}
@@ -82,11 +82,11 @@
<p><code>CarMaker</code> 的一个实现类:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RaceCarMaker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">CarMaker</span> </span>{
WheelMaker wheelMaker;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">setWheelMaker</span><span class="hljs-params">(WheelMaker wheelMaker)</span> </span>{
<span class="hljs-keyword">this</span>.wheelMaker = wheelMaker;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Car <span class="hljs-title">makeCar</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
Wheel wheel = wheelMaker.makeWheel();
@@ -108,7 +108,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">CarMaker</span> </span>{
<span class="hljs-function">Car <span class="hljs-title">makeCar</span><span class="hljs-params">(URL url)</span></span>;
}
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">WheelMaker</span> </span>{
<span class="hljs-function">Wheel <span class="hljs-title">makeWheel</span><span class="hljs-params">(URL url)</span></span>;
}
@@ -116,11 +116,11 @@
<p><code>CarMaker</code> 的一个实现类:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RaceCarMaker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">CarMaker</span> </span>{
WheelMaker wheelMaker;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">setWheelMaker</span><span class="hljs-params">(WheelMaker wheelMaker)</span> </span>{
<span class="hljs-keyword">this</span>.wheelMaker = wheelMaker;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> Car <span class="hljs-title">makeCar</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
Wheel wheel = wheelMaker.makeWheel(url);
@@ -140,7 +140,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">Transporter</span> </span>{
<span class="hljs-meta">@Adaptive</span>({<span class="hljs-string">"server"</span>, <span class="hljs-string">"transport"</span>})
<span class="hljs-function">Server <span class="hljs-title">bind</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>;
-
+
<span class="hljs-meta">@Adaptive</span>({<span class="hljs-string">"client"</span>, <span class="hljs-string">"transport"</span>})
<span class="hljs-function">Client <span class="hljs-title">connect</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>;
}
@@ -150,7 +150,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<p>对于集合类扩展点,比如:<code>Filter</code>, <code>InvokerListener</code>, <code>ExportListener</code>, <code>TelnetHandler</code>, <code>StatusChecker</code> 等,可以同时加载多个实现,此时,可以用自动激活来简化配置,如:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.Activate;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
-
+
<span class="hljs-meta">@Activate</span> <span class="hljs-comment">// 无条件自动激活</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -159,7 +159,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<p>或:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.Activate;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
-
+
<span class="hljs-meta">@Activate</span>(<span class="hljs-string">"xxx"</span>) <span class="hljs-comment">// 当配置了xxx参数,并且参数为有效值时激活,比如配了cache="lru",自动激活CacheFilter。</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -168,7 +168,7 @@ Wheel wheel = wheelMaker.makeWheel(url);
<p>或:</p>
<pre><code class="language-java"><span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.Activate;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
-
+
<span class="hljs-meta">@Activate</span>(group = <span class="hljs-string">"provider"</span>, value = <span class="hljs-string">"xxx"</span>) <span class="hljs-comment">// 只对提供方激活,group可选"provider"或"consumer"</span>
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -200,4 +200,4 @@ Wheel wheel = wheelMaker.makeWheel(url);
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/SUMMARY.html b/zh-cn/docs/dev/SUMMARY.html
index e097bf3..557eb3d 100644
--- a/zh-cn/docs/dev/SUMMARY.html
+++ b/zh-cn/docs/dev/SUMMARY.html
@@ -84,4 +84,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/TCK.html b/zh-cn/docs/dev/TCK.html
index b0a970d..9411c32 100644
--- a/zh-cn/docs/dev/TCK.html
+++ b/zh-cn/docs/dev/TCK.html
@@ -43,4 +43,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/build.html b/zh-cn/docs/dev/build.html
index 4d01372..7bd0644 100644
--- a/zh-cn/docs/dev/build.html
+++ b/zh-cn/docs/dev/build.html
@@ -78,4 +78,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/build.json b/zh-cn/docs/dev/build.json
index b55ae8c..811d35b 100644
--- a/zh-cn/docs/dev/build.json
+++ b/zh-cn/docs/dev/build.json
@@ -3,4 +3,4 @@
"__html": "<h1>源码构建</h1>\n<h2>代码签出</h2>\n<p>通过以下的这个命令签出最新的项目源码 <sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">[1]</a></sup>:</p>\n<pre><code class=\"language-sh\">git <span class=\"hljs-built_in\">clone</span> https://github.com/apache/dubbo.git dubbo\n</code></pre>\n<h2>分支</h2>\n<p>我们使用 master 作为主干版本的开发,使用分支作为维护版本。可以通过 <a href=\"https://github.com/apache/dubbo/tags\">https://github.com/apache/dubbo/tags</a> 来查看所有版本的标签。</p>\n<h2>构建</h2>\n<p>Dubbo 使用 <a href=\"http://maven.a [...]
"link": "/zh-cn/docs/dev/build.html",
"meta": {}
-}
+}
\ No newline at end of file
diff --git a/zh-cn/docs/dev/checklist.html b/zh-cn/docs/dev/checklist.html
index d3bb8a9..a59c057 100644
--- a/zh-cn/docs/dev/checklist.html
+++ b/zh-cn/docs/dev/checklist.html
@@ -56,4 +56,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/code-smell.html b/zh-cn/docs/dev/code-smell.html
index e65eeb4..9f9c287 100644
--- a/zh-cn/docs/dev/code-smell.html
+++ b/zh-cn/docs/dev/code-smell.html
@@ -88,23 +88,23 @@ GETROUTE(script://path/file.js?type=js&rule=ENCODE(function{...}))
<p>由于自适应扩展点的上面的约定,ExtensionLoader 会为扩展点自动生成自适应扩展点类(通过字节码),并将其实例注入。</p>
<p>ExtensionLoader 生成的自适应扩展点类如下:</p>
<pre><code class="language-java">package <扩展点接口所在包>;
-
+
public class <扩展点接口名>$Adpative implements <扩展点接口> {
public <有@Adaptive注解的接口方法>(<方法参数>) {
if(是否有URL类型方法参数?) 使用该URL参数
else if(是否有方法类型上有URL属性) 使用该URL属性
# <else 在加载扩展点生成自适应扩展点类时抛异常,即加载扩展点失败!>
-
+
if(获取的URL == null) {
throw new IllegalArgumentException("url == null");
}
-
+
根据@Adaptive注解上声明的Key的顺序,从URL获致Value,作为实际扩展点名。
如URL没有Value,则使用缺省扩展点实现。如没有扩展点, throw new IllegalStateException("Fail to get extension");
-
+
在扩展点实现调用该方法,并返回结果。
}
-
+
public <有@Adaptive注解的接口方法>(<方法参数>) {
throw new UnsupportedOperationException("is not adaptive method!");
}
@@ -157,4 +157,4 @@ public class <扩展点接口名>$Adpative implements <扩展点接口&
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/coding.html b/zh-cn/docs/dev/coding.html
index 806aeeb..b290efa 100644
--- a/zh-cn/docs/dev/coding.html
+++ b/zh-cn/docs/dev/coding.html
@@ -88,4 +88,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/contract.html b/zh-cn/docs/dev/contract.html
index 0327feb..4b69d74 100644
--- a/zh-cn/docs/dev/contract.html
+++ b/zh-cn/docs/dev/contract.html
@@ -42,4 +42,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/contribution.html b/zh-cn/docs/dev/contribution.html
index 57b2c74..1fc02d7 100644
--- a/zh-cn/docs/dev/contribution.html
+++ b/zh-cn/docs/dev/contribution.html
@@ -349,4 +349,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/design.html b/zh-cn/docs/dev/design.html
index b211c49..c2a03d0 100644
--- a/zh-cn/docs/dev/design.html
+++ b/zh-cn/docs/dev/design.html
@@ -111,4 +111,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/implementation.html b/zh-cn/docs/dev/implementation.html
index b3a5e51..0f55b5f 100644
--- a/zh-cn/docs/dev/implementation.html
+++ b/zh-cn/docs/dev/implementation.html
@@ -66,13 +66,13 @@
<p>为了更好的解释上面这张图,我们结合服务消费和提供者的代码示例来进行说明:</p>
<p>服务消费者代码:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DemoClientAction</span> </span>{
-
+
<span class="hljs-keyword">private</span> DemoService demoService;
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">setDemoService</span><span class="hljs-params">(DemoService demoService)</span> </span>{
<span class="hljs-keyword">this</span>.demoService = demoService;
}
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">start</span><span class="hljs-params">()</span> </span>{
String hello = demoService.sayHello(<span class="hljs-string">"world"</span> + i);
}
@@ -81,7 +81,7 @@
<p>上面代码中的 <code>DemoService</code> 就是上图中服务消费端的 proxy,用户代码通过这个 proxy 调用其对应的 <code>Invoker</code> <sup class="footnote-ref"><a href="#fn5" id="fnref5">[5]</a></sup>,而该 <code>Invoker</code> 实现了真正的远程服务调用。</p>
<p>服务提供者代码:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">DemoServiceImpl</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">DemoService</span> </span>{
-
+
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">sayHello</span><span class="hljs-params">(String name)</span> <span class="hljs-keyword">throws</span> RemoteException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-string">"Hello "</span> + name;
}
@@ -206,4 +206,4 @@ Service name bytes (换行符)
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/cache.html b/zh-cn/docs/dev/impls/cache.html
index 906df6d..ef1ccde 100644
--- a/zh-cn/docs/dev/impls/cache.html
+++ b/zh-cn/docs/dev/impls/cache.html
@@ -20,9 +20,9 @@
<h2>扩展配置</h2>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:service</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"lru"</span> /></span>
<span class="hljs-comment"><!-- 方法级缓存 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span>></span><span class="hljs-tag"><<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"lru"</span> /></span><span class="hljs-tag"></<span class="hljs-name">dubbo:service</span>></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:service</span>></span><span class="hljs-tag"><<span class="hljs-name">dubbo:method</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"lru"</span> /></span><span class="hljs-tag"></<span class="hljs-name">dubbo:service</span>></span>
<span class="hljs-comment"><!-- 缺省值设置,当<dubbo:service>没有配置cache属性时,使用此配置 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">cache</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
</code></pre>
<h2>已知扩展</h2>
<ul>
@@ -45,9 +45,9 @@
</code></pre>
<p>XxxCacheFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.cache.CacheFactory;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCacheFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">CacheFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Cache <span class="hljs-title">getCache</span><span class="hljs-params">(URL url, String name)</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxCache(url, name);
@@ -56,9 +56,9 @@
</code></pre>
<p>XxxCacheFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.cache.Cache;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCache</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Cache</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">Cache</span><span class="hljs-params">(URL url, String name)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -91,4 +91,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/cluster.html b/zh-cn/docs/dev/impls/cluster.html
index 80aef9c..f8bf46e 100644
--- a/zh-cn/docs/dev/impls/cluster.html
+++ b/zh-cn/docs/dev/impls/cluster.html
@@ -46,7 +46,7 @@
</code></pre>
<p>XxxCluster.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Cluster;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Directory;
@@ -55,7 +55,7 @@
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Result;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCluster</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Cluster</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">Invoker<T> <span class="hljs-title">merge</span><span class="hljs-params">(Directory<T> directory)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> AbstractClusterInvoker<T>(directory) {
@@ -86,4 +86,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/compiler.html b/zh-cn/docs/dev/impls/compiler.html
index a8e6836..d028c20 100644
--- a/zh-cn/docs/dev/impls/compiler.html
+++ b/zh-cn/docs/dev/impls/compiler.html
@@ -39,9 +39,9 @@
</code></pre>
<p>XxxCompiler.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.compiler.Compiler;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxCompiler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Compiler</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Object <span class="hljs-title">getExtension</span><span class="hljs-params">(Class<?> type, String name)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -68,4 +68,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/container.html b/zh-cn/docs/dev/impls/container.html
index 3a5763e..405f518 100644
--- a/zh-cn/docs/dev/impls/container.html
+++ b/zh-cn/docs/dev/impls/container.html
@@ -41,10 +41,10 @@
</code></pre>
<p>XxxContainer.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
org.apache.dubbo.container.Container;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxContainer</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Container</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Status <span class="hljs-title">start</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -74,4 +74,4 @@ org.apache.dubbo.container.Container;
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/dispatcher.html b/zh-cn/docs/dev/impls/dispatcher.html
index b773233..5e09f66 100644
--- a/zh-cn/docs/dev/impls/dispatcher.html
+++ b/zh-cn/docs/dev/impls/dispatcher.html
@@ -45,9 +45,9 @@
</code></pre>
<p>XxxDispatcher.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.Dispatcher;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxDispatcher</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Dispatcher</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Group <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -74,4 +74,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/exchanger.html b/zh-cn/docs/dev/impls/exchanger.html
index f2018af..d869a47 100644
--- a/zh-cn/docs/dev/impls/exchanger.html
+++ b/zh-cn/docs/dev/impls/exchanger.html
@@ -45,10 +45,10 @@
</code></pre>
<p>XxxExchanger.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.exchange.Exchanger;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExchanger</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Exchanger</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> ExchangeServer <span class="hljs-title">bind</span><span class="hljs-params">(URL url, ExchangeHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxExchangeServer(url, handler);
@@ -61,18 +61,18 @@
<p>XxxExchangeServer.java:</p>
<pre><code class="language-java">
<span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.exchange.ExchangeServer;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExchangeServer</span> <span class="hljs-title">impelements</span> <span class="hljs-title">ExchangeServer</span> </span>{
<span class="hljs-comment">// ...</span>
}
</code></pre>
<p>XxxExchangeClient.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.exchange.ExchangeClient;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExchangeClient</span> <span class="hljs-title">impelments</span> <span class="hljs-title">ExchangeClient</span> </span>{
<span class="hljs-comment">// ...</span>
}
@@ -97,4 +97,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/exporter-listener.html b/zh-cn/docs/dev/impls/exporter-listener.html
index f3d9030..ce9376e 100644
--- a/zh-cn/docs/dev/impls/exporter-listener.html
+++ b/zh-cn/docs/dev/impls/exporter-listener.html
@@ -40,12 +40,12 @@
</code></pre>
<p>XxxExporterListener.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.ExporterListener;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Exporter;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExporterListener</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ExporterListener</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">exported</span><span class="hljs-params">(Exporter<?> exporter)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/extension-factory.html b/zh-cn/docs/dev/impls/extension-factory.html
index bb35b13..da0e8f4 100644
--- a/zh-cn/docs/dev/impls/extension-factory.html
+++ b/zh-cn/docs/dev/impls/extension-factory.html
@@ -40,9 +40,9 @@
</code></pre>
<p>XxxExtensionFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.extension.ExtensionFactory;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExtensionFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ExtensionFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Object <span class="hljs-title">getExtension</span><span class="hljs-params">(Class<?> type, String name)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -69,4 +69,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/filter.html b/zh-cn/docs/dev/impls/filter.html
index a04eeb5..6ce6b32 100644
--- a/zh-cn/docs/dev/impls/filter.html
+++ b/zh-cn/docs/dev/impls/filter.html
@@ -65,13 +65,13 @@
</code></pre>
<p>XxxFilter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Filter;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Result;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxFilter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Filter</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Result <span class="hljs-title">invoke</span><span class="hljs-params">(Invoker<?> invoker, Invocation invocation)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// before filter ...</span>
@@ -101,4 +101,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/introduction.html b/zh-cn/docs/dev/impls/introduction.html
index ea8dc5c..9d57c8d 100644
--- a/zh-cn/docs/dev/impls/introduction.html
+++ b/zh-cn/docs/dev/impls/introduction.html
@@ -31,4 +31,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/invoker-listener.html b/zh-cn/docs/dev/impls/invoker-listener.html
index 3f38480..51bd012 100644
--- a/zh-cn/docs/dev/impls/invoker-listener.html
+++ b/zh-cn/docs/dev/impls/invoker-listener.html
@@ -19,9 +19,9 @@
<p><code>org.apache.dubbo.rpc.InvokerListener</code></p>
<h2>扩展配置</h2>
<pre><code class="language-xml"><span class="hljs-comment"><!-- 引用服务监听 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:reference</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
<span class="hljs-comment"><!-- 引用服务缺省监听器 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:consumer</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:consumer</span> <span class="hljs-attr">listener</span>=<span class="hljs-string">"xxx,yyy"</span> /></span>
</code></pre>
<h2>已知扩展</h2>
<p><code>org.apache.dubbo.rpc.listener.DeprecatedInvokerListener</code></p>
@@ -40,11 +40,11 @@
</code></pre>
<p>XxxInvokerListener.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.InvokerListener;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxInvokerListener</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">InvokerListener</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">referred</span><span class="hljs-params">(Invoker<?> invoker)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -74,4 +74,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/load-balance.html b/zh-cn/docs/dev/impls/load-balance.html
index 9940796..9e98bb4 100644
--- a/zh-cn/docs/dev/impls/load-balance.html
+++ b/zh-cn/docs/dev/impls/load-balance.html
@@ -43,12 +43,12 @@
</code></pre>
<p>XxxLoadBalance.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.LoadBalance;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
-<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxLoadBalance</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">LoadBalance</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">Invoker<T> <span class="hljs-title">select</span><span class="hljs-params">(List<Invoker<T>> invokers, Invocation invocation)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -75,4 +75,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/logger-adapter.html b/zh-cn/docs/dev/impls/logger-adapter.html
index a41bb0a..58b10ba 100644
--- a/zh-cn/docs/dev/impls/logger-adapter.html
+++ b/zh-cn/docs/dev/impls/logger-adapter.html
@@ -46,9 +46,9 @@
</code></pre>
<p>XxxLoggerAdapter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.logger.LoggerAdapter;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxLoggerAdapter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">LoggerAdapter</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Logger <span class="hljs-title">getLogger</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -57,9 +57,9 @@
</code></pre>
<p>XxxLogger.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.logger.Logger;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxLogger</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Logger</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxLogger</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -90,4 +90,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/merger.html b/zh-cn/docs/dev/impls/merger.html
index c72c8d3..7330764 100644
--- a/zh-cn/docs/dev/impls/merger.html
+++ b/zh-cn/docs/dev/impls/merger.html
@@ -42,9 +42,9 @@
</code></pre>
<p>XxxMerger.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.Merger;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxMerger</span><<span class="hljs-title">T</span>> <span class="hljs-keyword">implements</span> <span class="hljs-title">Merger</span><<span class="hljs-title">T</span>> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> T <span class="hljs-title">merge</span><span class="hljs-params">(T... results)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -71,4 +71,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/monitor.html b/zh-cn/docs/dev/impls/monitor.html
index e2312ef..221831a 100644
--- a/zh-cn/docs/dev/impls/monitor.html
+++ b/zh-cn/docs/dev/impls/monitor.html
@@ -42,11 +42,11 @@
</code></pre>
<p>XxxMonitorFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.monitor.MonitorFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.monitor.Monitor;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.URL;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxMonitorFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">MonitorFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Monitor <span class="hljs-title">getMonitor</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxMonitor(url);
@@ -55,9 +55,9 @@
</code></pre>
<p>XxxMonitor.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.monitor.Monitor;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxMonitor</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Monitor</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">count</span><span class="hljs-params">(URL statistics)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -84,4 +84,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/networker.html b/zh-cn/docs/dev/impls/networker.html
index d455069..395063d 100644
--- a/zh-cn/docs/dev/impls/networker.html
+++ b/zh-cn/docs/dev/impls/networker.html
@@ -20,7 +20,7 @@
<h2>扩展配置</h2>
<pre><code class="language-xml"><span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">networker</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- 缺省值设置,当<dubbo:protocol>没有配置networker属性时,使用此配置 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">networker</span>=<span class="hljs-string">"xxx"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">networker</span>=<span class="hljs-string">"xxx"</span> /></span>
</code></pre>
<h2>已知扩展</h2>
<ul>
@@ -42,9 +42,9 @@
</code></pre>
<p>XxxNetworker.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.p2p.Networker;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxNetworker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Networker</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Group <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -71,4 +71,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/page.html b/zh-cn/docs/dev/impls/page.html
index be6c78c..33caff4 100644
--- a/zh-cn/docs/dev/impls/page.html
+++ b/zh-cn/docs/dev/impls/page.html
@@ -44,9 +44,9 @@
</code></pre>
<p>XxxPageHandler.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.container.page.PageHandler;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxPageHandler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">PageHandler</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Group <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -73,4 +73,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/protocol.html b/zh-cn/docs/dev/impls/protocol.html
index 65f4bac..eaef7b9 100644
--- a/zh-cn/docs/dev/impls/protocol.html
+++ b/zh-cn/docs/dev/impls/protocol.html
@@ -37,20 +37,20 @@
* 1. 协议在接收请求时,应记录请求来源方地址信息:RpcContext.getContext().setRemoteAddress();<br>
* 2. export()必须是幂等的,也就是暴露同一个URL的Invoker两次,和暴露一次没有区别。<br>
* 3. export()传入的Invoker由框架实现并传入,协议不需要关心。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> <T> 服务的类型
* <span class="hljs-doctag">@param</span> invoker 服务的执行体
* <span class="hljs-doctag">@return</span> exporter 暴露服务的引用,用于取消暴露
* <span class="hljs-doctag">@throws</span> RpcException 当暴露服务出错时抛出,比如端口已占用
*/</span>
<T> <span class="hljs-function">Exporter<T> <span class="hljs-title">export</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RpcException</span>;
-
+
<span class="hljs-comment">/**
* 引用远程服务:<br>
* 1. 当用户调用refer()所返回的Invoker对象的invoke()方法时,协议需相应执行同URL远端export()传入的Invoker对象的invoke()方法。<br>
* 2. refer()返回的Invoker由协议实现,协议通常需要在此Invoker中发送远程请求。<br>
* 3. 当url中有设置check=false时,连接失败不能抛出异常,需内部自动恢复。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> <T> 服务的类型
* <span class="hljs-doctag">@param</span> type 服务的类型
* <span class="hljs-doctag">@param</span> url 远程服务的URL地址
@@ -58,7 +58,7 @@
* <span class="hljs-doctag">@throws</span> RpcException 当连接服务提供方失败时抛出
*/</span>
<T> <span class="hljs-function">Invoker<T> <span class="hljs-title">refer</span><span class="hljs-params">(Class<T> type, URL url)</span> <span class="hljs-keyword">throws</span> RpcException</span>;
-
+
}
</code></pre>
<h2>扩展配置</h2>
@@ -95,9 +95,9 @@ src
</code></pre>
<p>XxxProtocol.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Protocol;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProtocol</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Protocol</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">Exporter<T> <span class="hljs-title">export</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxExporter(invoker);
@@ -109,9 +109,9 @@ src
</code></pre>
<p>XxxExporter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.support.AbstractExporter;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxExporter</span><<span class="hljs-title">T</span>> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractExporter</span><<span class="hljs-title">T</span>> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxExporter</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(invoker);
@@ -125,9 +125,9 @@ src
</code></pre>
<p>XxxInvoker.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.support.AbstractInvoker;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxInvoker</span><<span class="hljs-title">T</span>> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractInvoker</span><<span class="hljs-title">T</span>> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxInvoker</span><span class="hljs-params">(Class<T> type, URL url)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(type, url);
@@ -157,4 +157,4 @@ src
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/proxy-factory.html b/zh-cn/docs/dev/impls/proxy-factory.html
index 2bd7f26..f142e64 100644
--- a/zh-cn/docs/dev/impls/proxy-factory.html
+++ b/zh-cn/docs/dev/impls/proxy-factory.html
@@ -42,12 +42,12 @@
</code></pre>
<p>XxxProxyFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.ProxyFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxProxyFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ProxyFactory</span> </span>{
<span class="hljs-keyword">public</span> <T> <span class="hljs-function">T <span class="hljs-title">getProxy</span><span class="hljs-params">(Invoker<T> invoker)</span> <span class="hljs-keyword">throws</span> RpcException </span>{
<span class="hljs-comment">// ...</span>
@@ -77,4 +77,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/registry.html b/zh-cn/docs/dev/impls/registry.html
index 3cd1d07..a878f3f 100644
--- a/zh-cn/docs/dev/impls/registry.html
+++ b/zh-cn/docs/dev/impls/registry.html
@@ -33,7 +33,7 @@
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">RegistryFactory</span> </span>{
<span class="hljs-comment">/**
* 连接注册中心.
- *
+ *
* 连接注册中心需处理契约:<br>
* 1. 当设置check=false时表示不检查连接,否则在连接不上时抛出异常。<br>
* 2. 支持URL上的username:password权限认证。<br>
@@ -41,43 +41,43 @@
* 4. 支持file=registry.cache本地磁盘文件缓存。<br>
* 5. 支持timeout=1000请求超时设置。<br>
* 6. 支持session=60000会话超时或过期设置。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> url 注册中心地址,不允许为空
* <span class="hljs-doctag">@return</span> 注册中心引用,总不返回空
*/</span>
- <span class="hljs-function">Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span></span>;
+ <span class="hljs-function">Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span></span>;
}
</code></pre>
<p>RegistryService.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">RegistryService</span> </span>{ <span class="hljs-comment">// Registry extends RegistryService </span>
<span class="hljs-comment">/**
* 注册服务.
- *
+ *
* 注册需处理契约:<br>
* 1. 当URL设置了check=false时,注册失败后不报错,在后台定时重试,否则抛出异常。<br>
* 2. 当URL设置了dynamic=false参数,则需持久存储,否则,当注册者出现断电等情况异常退出时,需自动删除。<br>
* 3. 当URL设置了category=overrides时,表示分类存储,缺省类别为providers,可按分类部分通知数据。<br>
* 4. 当注册中心重启,网络抖动,不能丢失数据,包括断线自动删除数据。<br>
* 5. 允许URI相同但参数不同的URL并存,不能覆盖。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> url 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span></span>;
-
+
<span class="hljs-comment">/**
* 取消注册服务.
- *
+ *
* 取消注册需处理契约:<br>
* 1. 如果是dynamic=false的持久存储数据,找不到注册数据,则抛IllegalStateException,否则忽略。<br>
* 2. 按全URL匹配取消注册。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> url 注册信息,不允许为空,如:dubbo://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">unregister</span><span class="hljs-params">(URL url)</span></span>;
-
+
<span class="hljs-comment">/**
* 订阅服务.
- *
+ *
* 订阅需处理契约:<br>
* 1. 当URL设置了check=false时,订阅失败后不报错,在后台定时重试。<br>
* 2. 当URL设置了category=overrides,只通知指定分类的数据,多个分类用逗号分隔,并允许星号通配,表示订阅所有分类数据。<br>
@@ -86,51 +86,51 @@
* 5. 当注册中心重启,网络抖动,需自动恢复订阅请求。<br>
* 6. 允许URI相同但参数不同的URL并存,不能覆盖。<br>
* 7. 必须阻塞订阅过程,等第一次通知完后再返回。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> url 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* <span class="hljs-doctag">@param</span> listener 变更事件监听器,不允许为空
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">subscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span></span>;
-
+
<span class="hljs-comment">/**
* 取消订阅服务.
- *
+ *
* 取消订阅需处理契约:<br>
* 1. 如果没有订阅,直接忽略。<br>
* 2. 按全URL匹配取消订阅。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> url 订阅条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* <span class="hljs-doctag">@param</span> listener 变更事件监听器,不允许为空
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">unsubscribe</span><span class="hljs-params">(URL url, NotifyListener listener)</span></span>;
-
+
<span class="hljs-comment">/**
* 查询注册列表,与订阅的推模式相对应,这里为拉模式,只返回一次结果。
- *
+ *
* <span class="hljs-doctag">@see</span> org.apache.dubbo.registry.NotifyListener#notify(List)
* <span class="hljs-doctag">@param</span> url 查询条件,不允许为空,如:consumer://10.20.153.10/com.alibaba.foo.BarService?version=1.0.0&application=kylin
* <span class="hljs-doctag">@return</span> 已注册信息列表,可能为空,含义同{<span class="hljs-doctag">@link</span> org.apache.dubbo.registry.NotifyListener#notify(List<URL>)}的参数。
*/</span>
<span class="hljs-function">List<URL> <span class="hljs-title">lookup</span><span class="hljs-params">(URL url)</span></span>;
-
+
}
</code></pre>
<p>NotifyListener.java:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">NotifyListener</span> </span>{
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">interface</span> <span class="hljs-title">NotifyListener</span> </span>{
<span class="hljs-comment">/**
* 当收到服务变更通知时触发。
- *
+ *
* 通知需处理契约:<br>
* 1. 总是以服务接口和数据类型为维度全量通知,即不会通知一个服务的同类型的部分数据,用户不需要对比上一次通知结果。<br>
* 2. 订阅时的第一次通知,必须是一个服务的所有类型数据的全量通知。<br>
* 3. 中途变更时,允许不同类型的数据分开通知,比如:providers, consumers, routes, overrides,允许只通知其中一种类型,但该类型的数据必须是全量的,不是增量的。<br>
* 4. 如果一种类型的数据为空,需通知一个empty协议并带category参数的标识性URL数据。<br>
* 5. 通知者(即注册中心实现)需保证通知的顺序,比如:单线程推送,队列串行化,带版本对比。<br>
- *
+ *
* <span class="hljs-doctag">@param</span> urls 已注册信息列表,总不为空,含义同{<span class="hljs-doctag">@link</span> org.apache.dubbo.registry.RegistryService#lookup(URL)}的返回值。
*/</span>
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">notify</span><span class="hljs-params">(List<URL> urls)</span></span>;
-
+
}
</code></pre>
<h2>已知扩展</h2>
@@ -151,11 +151,11 @@
</code></pre>
<p>XxxRegistryFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.RegistryFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.Registry;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.URL;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRegistryFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">RegistryFactory</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Registry <span class="hljs-title">getRegistry</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxRegistry(url);
@@ -164,11 +164,11 @@
</code></pre>
<p>XxxRegistry.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.Registry;
<span class="hljs-keyword">import</span> org.apache.dubbo.registry.NotifyListener;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.URL;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRegistry</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Registry</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">register</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -204,4 +204,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/remoting.html b/zh-cn/docs/dev/impls/remoting.html
index 69aa24e..355636b 100644
--- a/zh-cn/docs/dev/impls/remoting.html
+++ b/zh-cn/docs/dev/impls/remoting.html
@@ -23,9 +23,9 @@
</ul>
<h2>扩展配置</h2>
<pre><code class="language-xml"><span class="hljs-comment"><!-- 服务器和客户端使用相同的传输实现 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">transporter</span>=<span class="hljs-string">"xxx"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">transporter</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- 服务器和客户端使用不同的传输实现 --></span>
-<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">server</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">client</span>=<span class="hljs-string">"xxx"</span> /></span>
+<span class="hljs-tag"><<span class="hljs-name">dubbo:protocol</span> <span class="hljs-attr">server</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">client</span>=<span class="hljs-string">"xxx"</span> /></span>
<span class="hljs-comment"><!-- 缺省值设置,当<dubbo:protocol>没有配置transporter/server/client属性时,使用此配置 --></span>
<span class="hljs-tag"><<span class="hljs-name">dubbo:provider</span> <span class="hljs-attr">transporter</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">server</span>=<span class="hljs-string">"xxx"</span> <span class="hljs-attr">client</span>=<span class="hljs-string">"xxx"</span> /></span>
</code></pre>
@@ -52,9 +52,9 @@
</code></pre>
<p>XxxTransporter.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.Transporter;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxTransporter</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Transporter</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Server <span class="hljs-title">bind</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxServer(url, handler);
@@ -66,9 +66,9 @@
</code></pre>
<p>XxxServer.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.transport.transporter.AbstractServer;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxServer</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractServer</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxServer</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(url, handler);
@@ -89,9 +89,9 @@
</code></pre>
<p>XxxClient.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.transport.transporter.AbstractClient;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxClient</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">AbstractClient</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxServer</span><span class="hljs-params">(URL url, ChannelHandler handler)</span> <span class="hljs-keyword">throws</span> RemotingException</span>{
<span class="hljs-keyword">super</span>(url, handler);
@@ -130,4 +130,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/router.html b/zh-cn/docs/dev/impls/router.html
index 17a1ea9..8598288 100644
--- a/zh-cn/docs/dev/impls/router.html
+++ b/zh-cn/docs/dev/impls/router.html
@@ -41,12 +41,12 @@
</code></pre>
<p>XxxRouterFactory.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.cluster.RouterFactory;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invoker;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.Invocation;
<span class="hljs-keyword">import</span> org.apache.dubbo.rpc.RpcException;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxRouterFactory</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">RouterFactory</span> </span>{
<span class="hljs-keyword">public</span> <T> List<Invoker<T>> select(List<Invoker<T>> invokers, Invocation invocation) <span class="hljs-keyword">throws</span> RpcException {
<span class="hljs-comment">// ...</span>
@@ -73,4 +73,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/serialize.html b/zh-cn/docs/dev/impls/serialize.html
index 2ce4f28..bbf8345 100644
--- a/zh-cn/docs/dev/impls/serialize.html
+++ b/zh-cn/docs/dev/impls/serialize.html
@@ -51,12 +51,12 @@
</code></pre>
<p>XxxSerialization.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.serialize.Serialization;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.serialize.ObjectInput;
<span class="hljs-keyword">import</span> org.apache.dubbo.common.serialize.ObjectOutput;
-
-
+
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxSerialization</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Serialization</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> ObjectOutput <span class="hljs-title">serialize</span><span class="hljs-params">(Parameters parameters, OutputStream output)</span> <span class="hljs-keyword">throws</span> IOException </span>{
<span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> XxxObjectOutput(output);
@@ -86,4 +86,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/status-checker.html b/zh-cn/docs/dev/impls/status-checker.html
index de39290..4da1217 100644
--- a/zh-cn/docs/dev/impls/status-checker.html
+++ b/zh-cn/docs/dev/impls/status-checker.html
@@ -47,9 +47,9 @@
</code></pre>
<p>XxxStatusChecker.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.status.StatusChecker;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxStatusChecker</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">StatusChecker</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Status <span class="hljs-title">check</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -76,4 +76,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/telnet-handler.html b/zh-cn/docs/dev/impls/telnet-handler.html
index 8921b66..ba9d7f6 100644
--- a/zh-cn/docs/dev/impls/telnet-handler.html
+++ b/zh-cn/docs/dev/impls/telnet-handler.html
@@ -51,11 +51,11 @@
</code></pre>
<p>XxxTelnetHandler.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.remoting.telnet.TelnetHandler;
-
+
<span class="hljs-meta">@Help</span>(parameter=<span class="hljs-string">"..."</span>, summary=<span class="hljs-string">"..."</span>, detail=<span class="hljs-string">"..."</span>)
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxTelnetHandler</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">TelnetHandler</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> String <span class="hljs-title">telnet</span><span class="hljs-params">(Channel channel, String message)</span> <span class="hljs-keyword">throws</span> RemotingException </span>{
<span class="hljs-comment">// ...</span>
@@ -86,4 +86,4 @@ dubbo> xxx args
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/threadpool.html b/zh-cn/docs/dev/impls/threadpool.html
index 772d446..98bb10c 100644
--- a/zh-cn/docs/dev/impls/threadpool.html
+++ b/zh-cn/docs/dev/impls/threadpool.html
@@ -42,10 +42,10 @@
</code></pre>
<p>XxxThreadPool.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.common.threadpool.ThreadPool;
<span class="hljs-keyword">import</span> java.util.concurrent.Executor;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxThreadPool</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ThreadPool</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Executor <span class="hljs-title">getExecutor</span><span class="hljs-params">()</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -72,4 +72,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/impls/validation.html b/zh-cn/docs/dev/impls/validation.html
index 76e9717..8d0ee98 100644
--- a/zh-cn/docs/dev/impls/validation.html
+++ b/zh-cn/docs/dev/impls/validation.html
@@ -39,9 +39,9 @@
</code></pre>
<p>XxxValidation.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.validation.Validation;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxValidation</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Validation</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> Object <span class="hljs-title">getValidator</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -50,9 +50,9 @@
</code></pre>
<p>XxxValidator.java:</p>
<pre><code class="language-java"><span class="hljs-keyword">package</span> com.xxx;
-
+
<span class="hljs-keyword">import</span> org.apache.dubbo.validation.Validator;
-
+
<span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XxxValidator</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">Validator</span> </span>{
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-title">XxxValidator</span><span class="hljs-params">(URL url)</span> </span>{
<span class="hljs-comment">// ...</span>
@@ -82,4 +82,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/introduction.html b/zh-cn/docs/dev/introduction.html
index d521b29..ea9777c 100644
--- a/zh-cn/docs/dev/introduction.html
+++ b/zh-cn/docs/dev/introduction.html
@@ -30,4 +30,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/principals/code-detail.html b/zh-cn/docs/dev/principals/code-detail.html
index 9b6f434..29f94c3 100644
--- a/zh-cn/docs/dev/principals/code-detail.html
+++ b/zh-cn/docs/dev/principals/code-detail.html
@@ -50,4 +50,4 @@
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/principals/configuration.html b/zh-cn/docs/dev/principals/configuration.html
index f795735..0f900d3 100644
--- a/zh-cn/docs/dev/principals/configuration.html
+++ b/zh-cn/docs/dev/principals/configuration.html
@@ -93,4 +93,4 @@ dubbo.registry.address=N/A
gtag('config', 'UA-112489517-1');
</script>
</body>
-</html>
+</html>
\ No newline at end of file
diff --git a/zh-cn/docs/dev/principals/dummy.html b/zh-cn/docs/dev/principals/dummy.html
index 452717f..2f63269 100644
--- a/zh-cn/docs/dev/principals/dummy.html
+++ b/zh-cn/docs/dev/principals/dummy.html
@@ -19,47 +19,47 @@
<p>最近有点痴呆,因为解决了太多的痴呆问题。服务框架实施面超来超广,已有 50 多个项目在使用,每天都要去帮应用查问题,来来回回,发现大部分都是配置错误,或者重复的文件或类,或者网络不通等,所以准备在新版本中加入防痴呆设计。估且这么叫吧,可能很简单,但对排错速度还是有点帮助,希望能抛砖引玉,也希望大家多给力,想出更多的防范措施共享出来。</p>
<h2>检查重复的jar包</h2>
<p>最痴呆的问题,就是有多个版本的相同jar包,会出现新版本的 A 类,调用了旧版本的 B 类,而且和JVM加载顺序有关,问题带有偶然性,误导性,遇到这种莫名其妙的问题,最头疼,所以,第一条,先把它防住,在每个 jar 包中挑一个一定会加载的类,加上重复类检查,给个示例:</p>
-<pre><code class="language-java"><span class="hljs-keyword">static</span> {
- Duplicate.checkDuplicate(Xxx.class);
-}
+<pre><code class="language-java"><span class="hljs-keyword">static</span> {
+ Duplicate.checkDuplicate(Xxx.class);
+}
</code></pre>
<p>检查重复工具类:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Duplicate</span> </span>{
-
- <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Duplicate</span><span class="hljs-params">()</span> </span>{}
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(Class cls)</span> </span>{
- checkDuplicate(cls.getName().replace(<span class="hljs-string">'.'</span>, <span class="hljs-string">'/'</span>) + <span class="hljs-string">".class"</span>);
- }
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(String path)</span> </span>{
- <span class="hljs-keyword">try</span> {
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Duplicate</span> </span>{
+
+ <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Duplicate</span><span class="hljs-params">()</span> </span>{}
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(Class cls)</span> </span>{
+ checkDuplicate(cls.getName().replace(<span class="hljs-string">'.'</span>, <span class="hljs-string">'/'</span>) + <span class="hljs-string">".class"</span>);
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkDuplicate</span><span class="hljs-params">(String path)</span> </span>{
+ <span class="hljs-keyword">try</span> {
<span class="hljs-comment">// 在ClassPath搜文件 </span>
- Enumeration urls = Thread.currentThread().getContextClassLoader().getResources(path);
- Set files = <span class="hljs-keyword">new</span> HashSet();
- <span class="hljs-keyword">while</span> (urls.hasMoreElements()) {
- URL url = urls.nextElement();
- <span class="hljs-keyword">if</span> (url != <span class="hljs-keyword">null</span>) {
- String file = url.getFile();
- <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> &amp;&amp; file.length() &gt; <span class="hljs-number">0</span>) {
- files.add(file);
- }
- }
- }
+ Enumeration urls = Thread.currentThread().getContextClassLoader().getResources(path);
+ Set files = <span class="hljs-keyword">new</span> HashSet();
+ <span class="hljs-keyword">while</span> (urls.hasMoreElements()) {
+ URL url = urls.nextElement();
+ <span class="hljs-keyword">if</span> (url != <span class="hljs-keyword">null</span>) {
+ String file = url.getFile();
+ <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> &amp;&amp; file.length() &gt; <span class="hljs-number">0</span>) {
+ files.add(file);
+ }
+ }
+ }
<span class="hljs-comment">// 如果有多个,就表示重复 </span>
- <span class="hljs-keyword">if</span> (files.size() &gt; <span class="hljs-number">1</span>) {
- logger.error(<span class="hljs-string">"Duplicate class "</span> + path + <span class="hljs-string">" in "</span> + files.size() + <span class="hljs-string">" jar "</span> + files);
- }
+ <span class="hljs-keyword">if</span> (files.size() &gt; <span class="hljs-number">1</span>) {
+ logger.error(<span class="hljs-string">"Duplicate class "</span> + path + <span class="hljs-string">" in "</span> + files.size() + <span class="hljs-string">" jar "</span> + files);
+ }
} <span class="hljs-keyword">catch</span> (Throwable e) { <span class="hljs-comment">// 防御性容错 </span>
- logger.error(e.getMessage(), e);
- }
- }
-
-}
+ logger.error(e.getMessage(), e);
+ }
+ }
+
+}
</code></pre>
<h2>检查重复的配置文件</h2>
<p>配置文件加载错,也是经常碰到的问题。用户通常会和你说:“我配置的很正确啊,不信我发给你看下,但就是报错”。然后查一圈下来,原来他发过来的配置根本没加载,平台很多产品都会在 classpath 下放一个约定的配置,如果项目中有多个,通常会取JVM加载的第一个,为了不被这么低级的问题折腾,和上面的重复jar包一样,在配置加载的地方,加上:</p>
-<pre><code class="language-java">Duplicate.checkDuplicate(<span class="hljs-string">"xxx.properties"</span>);
+<pre><code class="language-java">Duplicate.checkDuplicate(<span class="hljs-string">"xxx.properties"</span>);
</code></pre>
<h2>检查所有可选配置</h2>
<p>必填配置估计大家都会检查,因为没有的话,根本没法运行。但对一些可选参数,也应该做一些检查,比如:服务框架允许通过注册中心关联服务消费者和服务提供者,也允许直接配置服务提供者地址点对点直连,这时候,注册中心地址是可选的,但如果没有配点对点直连配置,注册中心地址就一定要配,这时候也要做相应检查。</p>
@@ -68,126 +68,126 @@
或者把平时支持应用时遇到的问题及解决办法都写到异常信息里。</p>
<h2>日志信息包含环境信息</h2>
<p>每次应用一出错,应用的开发或测试就会把出错信息发过来,询问原因,这时候我都会问一大堆套话,用的哪个版本呀?是生产环境还是开发测试环境?哪个注册中心呀?哪个项目中的?哪台机器呀?哪个服务? 累啊,最主要的是,有些开发或测试人员根本分不清,没办法,只好提供上门服务,浪费的时间可不是浮云,所以,日志中最好把需要的环境信息一并打进去,最好给日志输出做个包装,统一处理掉,免得忘了。包装Logger接口如:</p>
-<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">error</span><span class="hljs-params">(String msg, Throwable e)</span> </span>{
- delegate.error(msg + <span class="hljs-string">" on server "</span> + InetAddress.getLocalHost() + <span class="hljs-string">" using version "</span> + Version.getVersion(), e);
-}
+<pre><code class="language-java"><span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">error</span><span class="hljs-params">(String msg, Throwable e)</span> </span>{
+ delegate.error(msg + <span class="hljs-string">" on server "</span> + InetAddress.getLocalHost() + <span class="hljs-string">" using version "</span> + Version.getVersion(), e);
+}
</code></pre>
<p>获取版本号工具类:</p>
-<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Version</span> </span>{
-
- <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Version</span><span class="hljs-params">()</span> </span>{}
-
- <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Logger logger = LoggerFactory.getLogger(Version.class);
-
- <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Pattern VERSION_PATTERN = Pattern.compile(<span class="hljs-string">"([0-9][0-9\\.\\-]*)\\.jar"</span>);
-
- <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String VERSION = getVersion(Version.class, <span class="hljs-string">"2.0.0"</span>);
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">()</span></span>{
- <span class="hljs-keyword">return</span> VERSION;
- }
-
- <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">(Class cls, String defaultVersion)</span> </span>{
- <span class="hljs-keyword">try</span> {
+<pre><code class="language-java"><span class="hljs-keyword">public</span> <span class="hljs-keyword">final</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Version</span> </span>{
+
+ <span class="hljs-function"><span class="hljs-keyword">private</span> <span class="hljs-title">Version</span><span class="hljs-params">()</span> </span>{}
+
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Logger logger = LoggerFactory.getLogger(Version.class);
+
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> Pattern VERSION_PATTERN = Pattern.compile(<span class="hljs-string">"([0-9][0-9\\.\\-]*)\\.jar"</span>);
+
+ <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">final</span> String VERSION = getVersion(Version.class, <span class="hljs-string">"2.0.0"</span>);
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">()</span></span>{
+ <span class="hljs-keyword">return</span> VERSION;
+ }
+
+ <span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">getVersion</span><span class="hljs-params">(Class cls, String defaultVersion)</span> </span>{
+ <span class="hljs-keyword">try</span> {
<span class="hljs-comment">// 首先查找MANIFEST.MF规范中的版本号 </span>
- String version = cls.getPackage().getImplementationVersion();
- <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
- version = cls.getPackage().getSpecificationVersion();
- }
- <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
+ String version = cls.getPackage().getImplementationVersion();
+ <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
+ version = cls.getPackage().getSpecificationVersion();
+ }
+ <span class="hljs-keyword">if</span> (version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span>) {
<span class="hljs-comment">// 如果MANIFEST.MF规范中没有版本号,基于jar包名获取版本号 </span>
- String file = cls.getProtectionDomain().getCodeSource().getLocation().getFile();
- <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> && file.length() > <span class="hljs-number">0</span> && file.endsWith(<span class="hljs-string">".jar"</span>)) {
- Matcher matcher = VERSION_PATTERN.matcher(file);
- <span class="hljs-keyword">while</span> (matcher.find() && matcher.groupCount() > <span class="hljs-number">0</span>) {
- version = matcher.group(<span class="hljs-number">1</span>);
- }
- }
- }
+ String file = cls.getProtectionDomain().getCodeSource().getLocation().getFile();
+ <span class="hljs-keyword">if</span> (file != <span class="hljs-keyword">null</span> && file.length() > <span class="hljs-number">0</span> && file.endsWith(<span class="hljs-string">".jar"</span>)) {
+ Matcher matcher = VERSION_PATTERN.matcher(file);
+ <span class="hljs-keyword">while</span> (matcher.find() && matcher.groupCount() > <span class="hljs-number">0</span>) {
+ version = matcher.group(<span class="hljs-number">1</span>);
+ }
+ }
+ }
<span class="hljs-comment">// 返回版本号,如果为空返回缺省版本号 </span>
- <span class="hljs-keyword">return</span> version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span> ? defaultVersion : version;
+ <span class="hljs-keyword">return</span> version == <span class="hljs-keyword">null</span> || version.length() == <span class="hljs-number">0</span> ? defaultVersion : version;
} <span class="hljs-keyword">catch</span> (Throwable e) { <span class="hljs-comment">// 防御性容错 </span>
<span class="hljs-comment">// 忽略异常,返回缺省版本号 </span>
- logger.error(e.getMessage(), e);
- <span class="hljs-keyword">return</span> defaultVersion;
- }
- }
-
+ logger.error(e.getMessage(), e);
+ <span class="hljs-keyword">return</span> defaultVersion;
+ }
+ }
+
}
</code></pre>
<h2>kill 之前先 dump</h2>
<p>每次线上环境一出问题,大家就慌了,通常最直接的办法回滚重启,以减少故障时间,这样现场就被破坏了,要想事后查问题就麻烦了,有些问题必须在线上的大压力下才会发生,线下测试环境很难重现,不太可能让开发或 Appops 在重启前,先手工将出错现场所有数据备份一下,所以最好在 kill 脚本之前调用 dump,进行自动备份,这样就不会有人为疏忽。dump脚本示例:</p>
-<pre><code class="language-sh">JAVA_HOME=/usr/java
-OUTPUT_HOME=~/output
-DEPLOY_HOME=`dirname <span class="hljs-variable">$0</span>`
-HOST_NAME=`hostname`
-
-DUMP_PIDS=`ps --no-heading -C java -f --width 1000 | grep <span class="hljs-string">"<span class="hljs-variable">$DEPLOY_HOME</span>"</span> |awk <span class="hljs-string">'{print $2}'</span>`
-<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$DUMP_PIDS</span>"</span> ]; <span class="hljs-keyword">then</span>
- <span class="hljs-built_in">echo</span> <span class="hljs-string">"The server <span class="hljs-variable">$HOST_NAME</span> is not started!"</span>
- <span class="hljs-built_in">exit</span> 1;
-<span class="hljs-keyword">fi</span>
-
-DUMP_ROOT=<span class="hljs-variable">$OUTPUT_HOME</span>/dump
-<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_ROOT</span> ]; <span class="hljs-keyword">then</span>
- mkdir <span class="hljs-variable">$DUMP_ROOT</span>
-<span class="hljs-keyword">fi</span>
-
-DUMP_DATE=`date +%Y%m%d%H%M%S`
-DUMP_DIR=<span class="hljs-variable">$DUMP_ROOT</span>/dump-<span class="hljs-variable">$DUMP_DATE</span>
-<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_DIR</span> ]; <span class="hljs-keyword">then</span>
- mkdir <span class="hljs-variable">$DUMP_DIR</span>
-<span class="hljs-keyword">fi</span>
-
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">"Dumping the server <span class="hljs-variable">$HOST_NAME</span> ...\c"</span>
-<span class="hljs-keyword">for</span> PID <span class="hljs-keyword">in</span> <span class="hljs-variable">$DUMP_PIDS</span> ; <span class="hljs-keyword">do</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jstack <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstack-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jinfo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jinfo-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gcutil <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gcutil-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gccapacity <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gccapacity-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -heap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-heap-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -histo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-histo-<span class="hljs-variable">$PID</span>.dump 2>&1
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-keyword">if</span> [ -r /usr/sbin/lsof ]; <span class="hljs-keyword">then</span>
- /usr/sbin/lsof -p <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/lsof-<span class="hljs-variable">$PID</span>.dump
- <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
- <span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">done</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/sar ]; <span class="hljs-keyword">then</span>
-/usr/bin/sar > <span class="hljs-variable">$DUMP_DIR</span>/sar.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/uptime ]; <span class="hljs-keyword">then</span>
-/usr/bin/uptime > <span class="hljs-variable">$DUMP_DIR</span>/uptime.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/free ]; <span class="hljs-keyword">then</span>
-/usr/bin/free -t > <span class="hljs-variable">$DUMP_DIR</span>/free.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/vmstat ]; <span class="hljs-keyword">then</span>
-/usr/bin/vmstat > <span class="hljs-variable">$DUMP_DIR</span>/vmstat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/mpstat ]; <span class="hljs-keyword">then</span>
-/usr/bin/mpstat > <span class="hljs-variable">$DUMP_DIR</span>/mpstat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /usr/bin/iostat ]; <span class="hljs-keyword">then</span>
-/usr/bin/iostat > <span class="hljs-variable">$DUMP_DIR</span>/iostat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
-<span class="hljs-keyword">if</span> [ -r /bin/netstat ]; <span class="hljs-keyword">then</span>
-/bin/netstat > <span class="hljs-variable">$DUMP_DIR</span>/netstat.dump
-<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
-<span class="hljs-keyword">fi</span>
+<pre><code class="language-sh">JAVA_HOME=/usr/java
+OUTPUT_HOME=~/output
+DEPLOY_HOME=`dirname <span class="hljs-variable">$0</span>`
+HOST_NAME=`hostname`
+
+DUMP_PIDS=`ps --no-heading -C java -f --width 1000 | grep <span class="hljs-string">"<span class="hljs-variable">$DEPLOY_HOME</span>"</span> |awk <span class="hljs-string">'{print $2}'</span>`
+<span class="hljs-keyword">if</span> [ -z <span class="hljs-string">"<span class="hljs-variable">$DUMP_PIDS</span>"</span> ]; <span class="hljs-keyword">then</span>
+ <span class="hljs-built_in">echo</span> <span class="hljs-string">"The server <span class="hljs-variable">$HOST_NAME</span> is not started!"</span>
+ <span class="hljs-built_in">exit</span> 1;
+<span class="hljs-keyword">fi</span>
+
+DUMP_ROOT=<span class="hljs-variable">$OUTPUT_HOME</span>/dump
+<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_ROOT</span> ]; <span class="hljs-keyword">then</span>
+ mkdir <span class="hljs-variable">$DUMP_ROOT</span>
+<span class="hljs-keyword">fi</span>
+
+DUMP_DATE=`date +%Y%m%d%H%M%S`
+DUMP_DIR=<span class="hljs-variable">$DUMP_ROOT</span>/dump-<span class="hljs-variable">$DUMP_DATE</span>
+<span class="hljs-keyword">if</span> [ ! -d <span class="hljs-variable">$DUMP_DIR</span> ]; <span class="hljs-keyword">then</span>
+ mkdir <span class="hljs-variable">$DUMP_DIR</span>
+<span class="hljs-keyword">fi</span>
+
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">"Dumping the server <span class="hljs-variable">$HOST_NAME</span> ...\c"</span>
+<span class="hljs-keyword">for</span> PID <span class="hljs-keyword">in</span> <span class="hljs-variable">$DUMP_PIDS</span> ; <span class="hljs-keyword">do</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jstack <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstack-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jinfo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jinfo-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gcutil <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gcutil-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jstat -gccapacity <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jstat-gccapacity-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -heap <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-heap-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-variable">$JAVA_HOME</span>/bin/jmap -histo <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/jmap-histo-<span class="hljs-variable">$PID</span>.dump 2>&1
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-keyword">if</span> [ -r /usr/sbin/lsof ]; <span class="hljs-keyword">then</span>
+ /usr/sbin/lsof -p <span class="hljs-variable">$PID</span> > <span class="hljs-variable">$DUMP_DIR</span>/lsof-<span class="hljs-variable">$PID</span>.dump
+ <span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+ <span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">done</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/sar ]; <span class="hljs-keyword">then</span>
+/usr/bin/sar > <span class="hljs-variable">$DUMP_DIR</span>/sar.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/uptime ]; <span class="hljs-keyword">then</span>
+/usr/bin/uptime > <span class="hljs-variable">$DUMP_DIR</span>/uptime.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/free ]; <span class="hljs-keyword">then</span>
+/usr/bin/free -t > <span class="hljs-variable">$DUMP_DIR</span>/free.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/vmstat ]; <span class="hljs-keyword">then</span>
+/usr/bin/vmstat > <span class="hljs-variable">$DUMP_DIR</span>/vmstat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/mpstat ]; <span class="hljs-keyword">then</span>
+/usr/bin/mpstat > <span class="hljs-variable">$DUMP_DIR</span>/mpstat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /usr/bin/iostat ]; <span class="hljs-keyword">then</span>
+/usr/bin/iostat > <span class="hljs-variable">$DUMP_DIR</span>/iostat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
+<span class="hljs-keyword">if</span> [ -r /bin/netstat ]; <span class="hljs-keyword">then</span>
+/bin/netstat > <span class="hljs-variable">$DUMP_DIR</span>/netstat.dump
+<span class="hljs-built_in">echo</span> -e <span class="hljs-string">".\c"</span>
+<span class="hljs-keyword">fi</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">"OK!"</span>
</code></pre>
</div></section><footer class="footer-container"><div class="footer-body"><img src="/img/dubbo_gray.png"/><img class="apache" src="/img/apache_logo.png"/><div class="cols-container"><div class="col col-12"><h3></h3><p></p></div><div class="col col-4"><dl><dt>ASF</dt><dd><a href="http://www.apache.org" target="_self">基金会</a></dd><dd><a href="http://www.apache.org/licenses/" target="_self">证书</a></dd><dd><a href="http://www.apache.org/events/current-event" target="_self">事件</a></dd><dd><a [...]
@@ -207,4 +207,4 @@ DUMP_DIR=<span class="hljs-variable">$DUMP_ROOT</span>/dump-<span class="hljs-va
gtag('config', 'UA-112489517-1');
</script>
... 5564 lines suppressed ...