This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site-v2
in repository https://gitbox.apache.org/repos/asf/dubbo-website.git


The following commit(s) were added to refs/heads/asf-site-v2 by this push:
     new bc06f4505a deploy: 64367254c4cccc71b078f1423991d6e957935dc1
bc06f4505a is described below

commit bc06f4505a6e0cee97c6ade6b97b8bd4d97310e0
Author: AlbumenJ <[email protected]>
AuthorDate: Sun Jun 18 05:44:41 2023 +0000

    deploy: 64367254c4cccc71b078f1423991d6e957935dc1
---
 sitemap.xml                                             |  2 +-
 .../advanced-features-and-usage/observability/index.xml |  2 +-
 .../observability/tracing/index.html                    |  6 +++---
 .../advanced-features-and-usage/service/index.xml       | 17 +++++++++--------
 .../service/local-mock/index.html                       | 16 +++++++++-------
 .../java-sdk/reference-manual/protocol/http/index.html  |  6 +++---
 .../java-sdk/reference-manual/protocol/index.xml        |  7 +++++--
 .../java-sdk/reference-manual/protocol/rest/index.html  |  6 +++---
 zh-cn/sitemap.xml                                       |  2 +-
 9 files changed, 35 insertions(+), 29 deletions(-)

diff --git a/sitemap.xml b/sitemap.xml
index 4bc1d3ca2b..d1b56fde50 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-06-18T13:38:48+08:00</lastmod></sitemap><sitemap><loc>https://dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><sitemapindex 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9";><sitemap><loc>https://dubbo.apache.org/zh-cn/sitemap.xml</loc><lastmod>2023-06-18T13:40:09+08:00</lastmod></sitemap><sitemap><loc>https://dubbo.apache.org/en/sitemap.xml</loc><lastmod>2023-05-10T11:59:30+08:00</lastmod></sitemap></sitemapindex>
\ No newline at end of file
diff --git 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
index 534cf766f4..909060b0b5 100644
--- 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
+++ 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/index.xml
@@ -274,7 +274,7 @@
 &lt;li>&lt;a 
href="https://dubbo.apache.org/zh-cn/overview/tasks/observability/tracing/skywalking/";>使用
 Skywalking 实现 Dubbo 全链路追踪&lt;/a>&lt;/li>
 &lt;/ul>
 &lt;h2 id="关联日志">关联日志&lt;/h2>
-&lt;p>Dubbo Tracing 还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 
上下文,你只需要设置日志输出格式中包含类似 &lt;code>%X{traceId:-},%X{spanId:-}]&lt;/code>,即可实现业务日志与 
tracing 系统的自动关联,具体可参见 &lt;a 
href="https://github.com/apache/dubbo-samples/blob/master/4-governance/dubbo-samples-spring-boot-tracing/dubbo-samples-spring-boot-tracing-otel-otlp/provider/src/main/resources/application.yml";>Tracing
 日志上下文配置示例&lt;/a>。&lt;/p></description></item><item><title>Overview: 
日志管理</title><link>https://dubbo.apache.org/z [...]
+&lt;p>Dubbo Tracing 还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 
上下文,你只需要设置日志输出格式中包含类似 &lt;code>%X{traceId:-},%X{spanId:-}]&lt;/code>,即可实现业务日志与 
tracing 系统的自动关联,具体可参见 &lt;a 
href="https://github.com/apache/dubbo-samples/blob/master/4-governance/dubbo-samples-tracing/dubbo-samples-spring-boot-tracing-otel-otlp/provider/src/main/resources/application.yml";>Tracing
 日志上下文配置示例&lt;/a>。&lt;/p></description></item><item><title>Overview: 
日志管理</title><link>https://dubbo.apache.org/zh-cn/overvie [...]
 &lt;p>在 Dubbo 框架内所有的日志输出都是通过 LoggerFactory 这个静态工厂类来获得 Logger 的对象实体,并且抽离了一个 
LoggerAdapter 用于对接第三方日志框架,所以就有了JDKLoggerAdapter, Log4jLoggerAdapter, 
SLF4JLoggerAdapter等一些实现子类,分别对接了不同 Log 第三方实现。既然 Dubbo 能够支持这么多log实现,那么这些实现在 Dubbo 
中优先级是在呢么样的呢?这里的优先级是指未配置指定的 logger 提供方的情况下,由 Dubbo 框架自己选择。优先级如下:&lt;/p>
 &lt;table>
 &lt;thead>
diff --git 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
index 569c5a6c47..b1d893a7ff 100644
--- 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-ico [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-ico [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="链路追踪"><meta 
property="og:description" content="链路追踪"><meta name=twitter:description 
content="链路追踪"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing/";><meta
 property="og:title" content="链路追踪"><meta name=twit [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
@@ -675,8 +675,8 @@
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;artifactId&gt;</span>dubbo-spring-boot-tracing-otel-zipkin-starter<span
 style=color:#268bd2>&lt;/artifactId&gt;</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;version&gt;</span>3.2.1-SNAPSHOT<span 
style=color:#268bd2>&lt;/version&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;/dependency&gt;</span>
-</span></span></code></pre></div><p>更多完整示例请参见:</p><ul><li><a 
href=/zh-cn/overview/tasks/observability/tracing/zipkin/>使用 Zipkin 实现 Dubbo 
全链路追踪</a></li><li><a 
href=/zh-cn/overview/tasks/observability/tracing/skywalking/>使用 Skywalking 实现 
Dubbo 全链路追踪</a></li></ul><h2 id=关联日志>关联日志</h2><p>Dubbo Tracing 
还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 上下文,你只需要设置日志输出格式中包含类似 
<code>%X{traceId:-},%X{spanId:-}]</code>,即可实现业务日志与 tracing 系统的自动关联,具体可参见 <a 
href=https://github.com/apache/dubbo-samples [...]
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+</span></span></code></pre></div><p>更多完整示例请参见:</p><ul><li><a 
href=/zh-cn/overview/tasks/observability/tracing/zipkin/>使用 Zipkin 实现 Dubbo 
全链路追踪</a></li><li><a 
href=/zh-cn/overview/tasks/observability/tracing/skywalking/>使用 Skywalking 实现 
Dubbo 全链路追踪</a></li></ul><h2 id=关联日志>关联日志</h2><p>Dubbo Tracing 
还实现了与日志系统的自动关联,即将 tracing-id、span-id 等信息自动置入日志 MDC 上下文,你只需要设置日志输出格式中包含类似 
<code>%X{traceId:-},%X{spanId:-}]</code>,即可实现业务日志与 tracing 系统的自动关联,具体可参见 <a 
href=https://github.com/apache/dubbo-samples [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/observability/tracing.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-s
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e9%93%be%e8%b7%af%e8%bf%bd%e8%b8%aa";
 target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a 
href=#概述>概述</a></li><li><a href=#使用方式>使用方式</a></li><li><a 
href=#关联日志>关联日志</a></li></ul></nav></div></div></div></div><footer 
class="bg-dark py-5 row d-print-none footer-margin-0"><div 
class="container-fluid mx-sm-5"><div class=row><div class="col-6 col-sm-4 
text-xs-center o [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/index.xml 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/index.xml
index 22c5b1df94..42c1386bdb 100644
--- 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/index.xml
+++ 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/index.xml
@@ -2249,7 +2249,9 @@ key 为服务名,value 为服务提供者 url,此配置优先级最高,&lt
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#719e07">});&lt;/span>
 
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Overview:
 
本地伪装</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/</guid><description>
 &lt;h2 id="特性说明">特性说明&lt;/h2>
-&lt;p>在 Dubbo3 中有一种机制可以实现轻量级的服务降级,也就是本地伪装 [^1]。&lt;/p>
+&lt;p>在 Dubbo3 中有一种机制可以实现轻量级的服务降级,也就是本地伪装。&lt;/p>
+&lt;p>Mock 是 Stub 的一个子集,便于服务提供方在客户端执行容错逻辑,因经常需要在出现 RpcException 
(比如网络失败,超时等)时进行容错,而在出现业务异常(比如登录用户名密码错误)时不需要容错,
+如果用 Stub,可能就需要捕获并依赖 RpcException 类,而用 Mock 就可以不依赖 RpcException,因为它的约定就是只有出现 
RpcException 时才执行。&lt;/p>
 &lt;h2 id="使用场景">使用场景&lt;/h2>
 &lt;p>本地伪装常被用于服务降级。比如某验权服务,当服务提供方全部挂掉后,假如此时服务消费方发起了一次远程调用,那么本次调用将会失败并抛出一个 
&lt;code>RpcException&lt;/code> 异常。&lt;/p>
 &lt;p>为了避免出现这种直接抛出异常的情况出现,那么客户端就可以利用本地伪装来提供 Mock 数据返回授权失败。&lt;/p>
@@ -2259,7 +2261,8 @@ key 为服务名,value 为服务提供者 url,此配置优先级最高,&lt
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> interface=&lt;span 
style="color:#2aa198">&amp;#34;com.foo.BarService&amp;#34;&lt;/span> 
mock=&lt;span style="color:#2aa198">&amp;#34;true&amp;#34;&lt;/span> &lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>或&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span 
style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> interface=&lt;span 
style="color:#2aa198">&amp;#34;com.foo.BarService&amp;#34;&lt;/span> 
mock=&lt;span 
style="color:#2aa198">&amp;#34;com.foo.BarServiceMock&amp;#34;&lt;/span> 
&lt;span style="color:#268bd2" [...]
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>在工程中提供 Mock 实现 
[^2]:&lt;/p>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>在工程中提供 Mock 实现 [^2]:
+在 interface 旁放一个 Mock 实现,它实现 BarService 接口,并有一个无参构造函数。同时,如果没有在配置文件中显式指定 Mock 
类的时候,那么需要保证 Mock 类的全限定类名是 &lt;code>原全限定类名+Mock&lt;/code> 的形式,例如 
&lt;code>com.foo.BarServiceMock&lt;/code>,否则将会 Mock 失败。&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-java" data-lang="java">&lt;span 
style="display:flex;">&lt;span>&lt;span style="color:#719e07">package&lt;/span> 
com.foo&lt;span style="color:#719e07">;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">public&lt;/span> &lt;span 
style="color:#268bd2">class&lt;/span> &lt;span 
style="color:#268bd2">BarServiceMock&lt;/span> &lt;span 
style="color:#268bd2">implements&lt;/span> BarService &lt;span 
style="color:#719e07">{&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">public&lt;/span> String &lt;span 
style="color:#268bd2">sayHello&lt;/span>&lt;span 
style="color:#719e07">(&lt;/span>String name&lt;span 
style="color:#719e07">)&lt;/span> &lt;span style="color:#719e07">{&lt;/span>
@@ -2270,7 +2273,7 @@ key 为服务名,value 为服务提供者 url,此配置优先级最高,&lt
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 
id="使用-return-关键字-mock-返回值">使用 return 关键字 Mock 返回值&lt;/h3>
 &lt;p>使用 &lt;code>return&lt;/code> 来返回一个字符串表示的对象,作为 Mock 的返回值。合法的字符串可以是:&lt;/p>
 &lt;ul>
-&lt;li>&lt;em>empty&lt;/em>:代表空,返回基本类型的默认值、集合类的空值、自定义实体类的空对象 [^3]&lt;/li>
+&lt;li>&lt;em>empty&lt;/em>:代表空,返回基本类型的默认值、集合类的空值、自定义实体类的空对象,如果返回值是一个实体类,那么此时返回的将会是一个属性都为默认值的空对象而不是
 &lt;code>null&lt;/code>。&lt;/li>
 &lt;li>&lt;em>null&lt;/em>:返回 &lt;code>null&lt;/code>&lt;/li>
 &lt;li>&lt;em>true&lt;/em>:返回 &lt;code>true&lt;/code>&lt;/li>
 &lt;li>&lt;em>false&lt;/em>:返回 &lt;code>false&lt;/code>&lt;/li>
@@ -2297,7 +2300,8 @@ key 为服务名,value 为服务提供者 url,此配置优先级最高,&lt
 &lt;p>当调用出错时,抛出一个默认的 RPCException:&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> interface=&lt;span 
style="color:#2aa198">&amp;#34;com.foo.BarService&amp;#34;&lt;/span> 
mock=&lt;span style="color:#2aa198">&amp;#34;throw&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>当调用出错时,抛出指定的 Exception 
[^4]:&lt;/p>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>当调用出错时,抛出指定的 
Exception:&lt;/p>
+&lt;p>自定义异常必须拥有一个入参为 &lt;code>String&lt;/code> 的构造函数,该构造函数将用于接受异常信息。&lt;/p>
 &lt;div class="highlight">&lt;pre tabindex="0" 
style="color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code
 class="language-xml" data-lang="xml">&lt;span style="display:flex;">&lt;span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> interface=&lt;span 
style="color:#2aa198">&amp;#34;com.foo.BarService&amp;#34;&lt;/span> 
mock=&lt;span style="color:#2aa198">&amp;#34;throw 
com.foo.MockException&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 
id="使用-force-和-fail-关键字来配置-mock-的行为">使用 force 和 fail 关键字来配置 Mock 的行为&lt;/h3>
@@ -2329,10 +2333,7 @@ key 为服务名,value 为服务提供者 url,此配置优先级最高,&lt
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;dubbo:reference&lt;/span> id=&lt;span 
style="color:#2aa198">&amp;#34;demoService&amp;#34;&lt;/span> check=&lt;span 
style="color:#2aa198">&amp;#34;false&amp;#34;&lt;/span> interface=&lt;span 
style="color:#2aa198">&amp;#34;com.foo.BarService&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;dubbo:parameter&lt;/span> key=&lt;span 
style="color:#2aa198">&amp;#34;sayHello.mock&amp;#34;&lt;/span> value=&lt;span 
style="color:#2aa198">&amp;#34;force:return fake&amp;#34;&lt;/span>&lt;span 
style="color:#268bd2">/&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;/dubbo:reference&amp;gt;&lt;/span>
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
-&lt;div class="alert alert-primary" role="alert">
-&lt;h4 class="alert-heading">注意事项&lt;/h4>
-&lt;/div></description></item><item><title>Overview: 
多注册中心</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/multi-registry/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/multi-registry/</guid><description>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Overview:
 
多注册中心</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/multi-registry/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/multi-registry/</guid><description>
 &lt;h2 id="特性说明">特性说明&lt;/h2>
 &lt;p>Dubbo 
支持同一服务向多注册中心同时注册,或者不同服务分别注册到不同的注册中心上去,甚至可以同时引用注册在不同注册中心上的同名服务。另外,注册中心是支持自定义扩展的 
&lt;sup id="fnref:1">&lt;a href="#fn:1" class="footnote-ref" 
role="doc-noteref">1&lt;/a>&lt;/sup>。&lt;/p>
 &lt;h2 id="使用场景">使用场景&lt;/h2>
diff --git 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/index.html
 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/index.html
index 308ee88399..b8c3dd5dd5 100644
--- 
a/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/index.html
+++ 
b/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-1 [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-1 [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="了解如何在 Dubbo 
中利用本地伪装实现服务降级"><meta property="og:description" content="了解如何在 Dubbo 
中利用本地伪装实现服务降级"><meta name=twitter:description content="了解如何在 Dubbo 
中利用本地伪装实现服务降级"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-moc
 [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
@@ -670,16 +670,18 @@
 <label for=m-zh-cnoverviewreferenceprotocols-check><a 
href=/zh-cn/overview/reference/protocols/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__section" 
id=m-zh-cnoverviewreferenceprotocols><span>协议规范</span></a></label><ul 
class="ul-3 foldable"><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstriple-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstriple-check>
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
-<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+<label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
+如果用 Stub,可能就需要捕获并依赖 RpcException 类,而用 Mock 就可以不依赖 RpcException,因为它的约定就是只有出现 
RpcException 时才执行。</p><h2 
id=使用场景>使用场景</h2><p>本地伪装常被用于服务降级。比如某验权服务,当服务提供方全部挂掉后,假如此时服务消费方发起了一次远程调用,那么本次调用将会失败并抛出一个
 <code>RpcException</code> 异常。</p><p>为了避免出现这种直接抛出异常的情况出现,那么客户端就可以利用本地伪装来提供 Mock 
数据返回授权失败。</p><h2 id=使用方式>使用方式</h2><h3 id=开启-mock-配置>开启 Mock 配置</h3><p>在 Spring 
XML 配置文件中按以下方式配置:</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4>
 [...]
 </span></span></code></pre></div><p>或</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;com.foo.BarService&#34;</span> mock=<span 
style=color:#2aa198>&#34;com.foo.BarServiceMock&#34;</span> <span 
style=color:#268bd2>/&gt;</span>
-</span></span></code></pre></div><p>在工程中提供 Mock 实现 [^2]:</p><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#719e07>package</span> com.foo<span style=color:#719e07>;</span>
+</span></span></code></pre></div><p>在工程中提供 Mock 实现 [^2]:
+在 interface 旁放一个 Mock 实现,它实现 BarService 接口,并有一个无参构造函数。同时,如果没有在配置文件中显式指定 Mock 
类的时候,那么需要保证 Mock 类的全限定类名是 <code>原全限定类名+Mock</code> 的形式,例如 
<code>com.foo.BarServiceMock</code>,否则将会 Mock 失败。</p><div class=highlight><pre 
tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#719e07>package</span> com.foo<span style=color:#719e07>;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span 
style=color:#268bd2>BarServiceMock</span> <span 
style=color:#268bd2>implements</span> BarService <span 
style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>public</span> String <span 
style=color:#268bd2>sayHello</span><span style=color:#719e07>(</span>String 
name<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>        <span 
style=color:#586e75>// 你可以伪造容错数据,此方法只在出现RpcException时被执行
 </span></span></span><span style=display:flex><span><span 
style=color:#586e75></span>        <span style=color:#719e07>return</span> 
<span style=color:#2aa198>&#34;容错数据&#34;</span><span 
style=color:#719e07>;</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#719e07>}</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
-</span></span></code></pre></div><h3 id=使用-return-关键字-mock-返回值>使用 return 关键字 
Mock 返回值</h3><p>使用 <code>return</code> 来返回一个字符串表示的对象,作为 Mock 
的返回值。合法的字符串可以是:</p><ul><li><em>empty</em>:代表空,返回基本类型的默认值、集合类的空值、自定义实体类的空对象 
[^3]</li><li><em>null</em>:返回 <code>null</code></li><li><em>true</em>:返回 
<code>true</code></li><li><em>false</em>:返回 <code>false</code></li><li><em>JSON 
字符串</em>:返回反序列化 JSON 串后所得到的对象</li></ul><p>举个例子,如果服务的消费方经常需要 try-catch 
捕获异常,如:</p><div class=highlight><pre tabindex=0 style=co [...]
+</span></span></code></pre></div><h3 id=使用-return-关键字-mock-返回值>使用 return 关键字 
Mock 返回值</h3><p>使用 <code>return</code> 来返回一个字符串表示的对象,作为 Mock 
的返回值。合法的字符串可以是:</p><ul><li><em>empty</em>:代表空,返回基本类型的默认值、集合类的空值、自定义实体类的空对象,如果返回值是一个实体类,那么此时返回的将会是一个属性都为默认值的空对象而不是
 <code>null</code>。</li><li><em>null</em>:返回 
<code>null</code></li><li><em>true</em>:返回 
<code>true</code></li><li><em>false</em>:返回 <code>false</code></li><li><em>JSON 
字符串</em>:返回反序列化 JSON 串后所得到的对象</li></ul><p>举个例子,如果服务的消费方经常需要 try-catch 捕获异 [...]
 </span></span><span style=display:flex><span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>public</span> Offer <span 
style=color:#268bd2>findOffer</span><span style=color:#719e07>(</span>String 
offerId<span style=color:#719e07>)</span> <span style=color:#719e07>{</span>
 </span></span><span style=display:flex><span>        Offer offer <span 
style=color:#719e07>=</span> <span style=color:#cb4b16>null</span><span 
style=color:#719e07>;</span>
@@ -695,7 +697,7 @@
 </span></span></code></pre></div><p>那么请考虑改为 Mock 实现,并在 Mock 实现中 <code>return 
null</code>。如果只是想简单的忽略异常,在 <code>2.0.11</code> 以上版本可用:</p><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;com.foo.BarService&#34;</span> mock=<span 
style=color:#2aa198>&#34;ret [...]
 </span></span></code></pre></div><h3 id=使用-throw-关键字-mock-抛出异常>使用 throw 关键字 
Mock 抛出异常</h3><p>使用 <code>throw</code> 来返回一个 Exception 对象,作为 Mock 
的返回值。</p><p>当调用出错时,抛出一个默认的 RPCException:</p><div class=highlight><pre 
tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;com.foo.BarService&#34;</span> mock=<span 
style=color:#2aa198>&#34;throw&#34;</span><span style=color:#268bd2>/&gt;</span>
-</span></span></code></pre></div><p>当调用出错时,抛出指定的 Exception [^4]:</p><div 
class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span>
+</span></span></code></pre></div><p>当调用出错时,抛出指定的 
Exception:</p><p>自定义异常必须拥有一个入参为 <code>String</code> 
的构造函数,该构造函数将用于接受异常信息。</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;com.foo.BarService&#34;</span> mock=<span 
style=color:#2aa198>&#34;throw com.foo.MockException&#34;</span><span 
style=color:#268bd2>/&gt;</span>
 </span></span></code></pre></div><h3 id=使用-force-和-fail-关键字来配置-mock-的行为>使用 
force 和 fail 关键字来配置 Mock 的行为</h3><p><code>force:</code> 代表强制使用 Mock 
行为,在这种情况下不会走远程调用。</p><p><code>fail:</code> 与默认行为一致,只有当远程调用发生错误时才使用 Mock 
行为。也就是说,配置的时候其实是可以不使用 <code>fail</code> 关键字的,直接使用 <code>throw</code> 或者 
<code>return</code> 就可以了。</p><p><code>force:</code> 和 <code>fail:</code> 都支持与 
<code>throw</code> 或者 <code>return</code> 组合使用。</p><p>强制返回指定值:</p><div 
class=highlight><pre tabindex=0 style=color:#93a1a1;back [...]
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> interface=<span 
style=color:#2aa198>&#34;com.foo.BarService&#34;</span> mock=<span 
style=color:#2aa198>&#34;force:return fake&#34;</span><span 
style=color:#268bd2>/&gt;</span>
@@ -715,8 +717,8 @@
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:reference</span> id=<span 
style=color:#2aa198>&#34;demoService&#34;</span> check=<span 
style=color:#2aa198>&#34;false&#34;</span> interface=<span 
style=color:#2aa198>&#34;com.foo.BarService&#34;</span><span 
style=color:#268bd2>&gt;</span>
 </span></span><span style=display:flex><span>    <span 
style=color:#268bd2>&lt;dubbo:parameter</span> key=<span 
style=color:#2aa198>&#34;sayHello.mock&#34;</span> value=<span 
style=color:#2aa198>&#34;force:return fake&#34;</span><span 
style=color:#268bd2>/&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;/dubbo:reference&gt;</span>
-</span></span></code></pre></div><div class="alert alert-primary" 
role=alert><h4 class=alert-heading>注意事项</h4></div><div 
id=pre-footer><h2>反馈</h2><p class=feedback--prompt>此页是否对您有帮助?</p><button 
class="btn btn-primary mb-4 feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+</span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/service/local-mock.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-star
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=%e6%9c%ac%e5%9c%b0%e4%bc%aa%e8%a3%85";
 target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a 
href=#特性说明>特性说明</a></li><li><a href=#使用场景>使用场景</a></li><li><a 
href=#使用方式>使用方式</a><ul><li><a href=#开启-mock-配置>开启 Mock 配置</a></li><li><a 
href=#使用-return-关键字-mock-返回值>使用 return 关键字 Mock 返回值</a></li><li><a 
href=#使用-throw-关键字-mock-抛出异常>使用 throw 关键字 Mock 抛出异常</a></li><li><a href= [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/index.html 
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/index.html
index a2a9968bee..ba425b7cd0 100644
--- a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/index.html
+++ b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180.png sizes [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180.png sizes [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="HTTP协议"><meta 
property="og:description" content="HTTP协议"><meta name=twitter:description 
content="HTTP协议"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http/";><meta
 property="og:title" content="HTTP协议"><meta name=twitter:title c [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
@@ -687,8 +687,8 @@
 </span></span><span style=display:flex><span>         <span 
style=color:#268bd2>&lt;servlet-name&gt;</span>dubbo<span 
style=color:#268bd2>&lt;/servlet-name&gt;</span>
 </span></span><span style=display:flex><span>         <span 
style=color:#268bd2>&lt;url-pattern&gt;</span>/*<span 
style=color:#268bd2>&lt;/url-pattern&gt;</span>
 </span></span><span style=display:flex><span><span 
style=color:#268bd2>&lt;/servlet-mapping&gt;</span>
-</span></span></code></pre></div><blockquote><p>如果使用 servlet 
派发请求</p><ul><li>协议的端口 <code>&lt;dubbo:protocol port="8080" /></code> 必须与 
servlet 容器的端口相同,</li><li>协议的上下文路径 <code>&lt;dubbo:protocol contextpath="foo" 
/></code> 必须与 servlet 应用的上下文路径相同。</li></ul></blockquote><div 
id=pre-footer><h2>反馈</h2><p class=feedback--prompt>此页是否对您有帮助?</p><button 
class="btn btn-primary mb-4 feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+</span></span></code></pre></div><div class="alert alert-primary" 
role=alert><h4 class=alert-heading>注意</h4><p>如果使用 servlet 派发请求</p><ul><li>协议的端口 
<code>&lt;dubbo:protocol port="8080" /></code> 必须与 servlet 
容器的端口相同,</li><li>协议的上下文路径 <code>&lt;dubbo:protocol contextpath="foo" /></code> 
必须与 servlet 应用的上下文路径相同。</li></ul></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/http.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=HTTP%e5%8d%8f%e8%ae%ae";
 target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a 
href=#特性说明>特性说明</a><ul><li></li></ul></li><li><a href=#使用场景>使用场景</a></li><li><a 
href=#使用方式>使用方式</a><ul><li><a href=#配置协议>配置协议</a></li><li><a 
href=#配置-jetty-server-默认>配置 Jetty Server (默认)</a></li><li><a 
href=#配置-servlet-bridge-server-推荐使用>配置 Servlet Bridge Server (推荐使用)</a>< [...]
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/index.xml 
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/index.xml
index 79876413f7..6dd4e7de08 100644
--- a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/index.xml
+++ b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/index.xml
@@ -333,6 +333,7 @@ Interface 方式。&lt;/p>
 &lt;p>此协议提供通过 web 访问服务的简单方式,将服务与其他基于 web 的应用程序集成。
 支持 JSON、XML 和 Text 格式的请求和响应,发布和使用服务的便捷方式,也提供了服务版本控制、服务过滤、服务元数据和服务参数, 实现 Dubbo 
框架的灵活性和可伸缩性。&lt;/p>
 &lt;h2 id="使用场景">使用场景&lt;/h2>
+&lt;p>将 Dubbo 服务公开为 RESTful API,与微服务和现有 RESTful 系统集成,实现与非 Java 
客户端的互操作性,并促进混合通信。&lt;/p>
 &lt;h2 id="使用方式">使用方式&lt;/h2>
 &lt;h3 id="快速入门">快速入门&lt;/h3>
 &lt;p>在 dubbo 中开发一个 REST 风格的服务会比较简单,下面以一个注册用户的简单服务为例说明。&lt;/p>
@@ -839,13 +840,15 @@ Interface 方式。&lt;/p>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;servlet-name&amp;gt;&lt;/span>dubbo&lt;span 
style="color:#268bd2">&amp;lt;/servlet-name&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span 
style="color:#268bd2">&amp;lt;url-pattern&amp;gt;&lt;/span>/*&lt;span 
style="color:#268bd2">&amp;lt;/url-pattern&amp;gt;&lt;/span>
 &lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span 
style="color:#268bd2">&amp;lt;/servlet-mapping&amp;gt;&lt;/span>
-&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;blockquote>
+&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
+&lt;div class="alert alert-primary" role="alert">
+&lt;h4 class="alert-heading">注意&lt;/h4>
 &lt;p>如果使用 servlet 派发请求&lt;/p>
 &lt;ul>
 &lt;li>协议的端口 &lt;code>&amp;lt;dubbo:protocol port=&amp;quot;8080&amp;quot; 
/&amp;gt;&lt;/code> 必须与 servlet 容器的端口相同,&lt;/li>
 &lt;li>协议的上下文路径 &lt;code>&amp;lt;dubbo:protocol 
contextpath=&amp;quot;foo&amp;quot; /&amp;gt;&lt;/code> 必须与 servlet 
应用的上下文路径相同。&lt;/li>
 &lt;/ul>
-&lt;/blockquote></description></item><item><title>Overview: Rest 
协议</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/v3.2_rest_protocol_design/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/v3.2_rest_protocol_design/</guid><description>
+&lt;/div></description></item><item><title>Overview: Rest 
协议</title><link>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/v3.2_rest_protocol_design/</link><pubDate>Mon,
 01 Jan 0001 00:00:00 
+0000</pubDate><guid>https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/v3.2_rest_protocol_design/</guid><description>
 &lt;h1 id="dubborestprotocol设计文档">Dubbo RestProtocol 设计文档&lt;/h1>
 &lt;h2 id="原版本dubborest">原版本dubbo rest&lt;/h2>
 &lt;p>consumer&lt;/p>
diff --git 
a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/index.html 
b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/index.html
index bfbfd15585..9af8fc1e30 100644
--- a/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/index.html
+++ b/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/index.html
@@ -1,4 +1,4 @@
-<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180.png sizes [...]
+<!doctype html><html lang=zh-cn class=no-js><head><meta name=ROBOTS 
content="INDEX, FOLLOW"><link rel=canonical 
href=https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/><meta
 charset=utf-8><meta name=viewport 
content="width=device-width,initial-scale=1,shrink-to-fit=no"><meta 
name=generator content="Hugo 0.113.0"><link rel="shortcut icon" type=image/png 
href=/imgs/favicon.png><link rel=apple-touch-icon 
href=/favicons/apple-touch-icon-180x180.png sizes [...]
 <script>var 
doNotTrack=!1;if(!doNotTrack){window.dataLayer=window.dataLayer||[];function 
gtag(){dataLayer.push(arguments)}gtag("js",new 
Date),gtag("config","G-1TFHM5YBH0",{anonymize_ip:!1})}</script><link 
rel=preload 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 as=style><link 
href=/scss/main.min.827bbd3e83b1e0c66a1c08738c713f88f8068e84600146c2dbf9035f0f496f01.css
 rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js 
integrity="sha256-9/a [...]
 <link rel=stylesheet href=https://cdn.jsdelivr.net/npm/@docsearch/css@3><meta 
name=theme-color content="#326ce5"><link rel=stylesheet 
href=/css/feature-states.css><meta name=description content="Rest协议"><meta 
property="og:description" content="Rest协议"><meta name=twitter:description 
content="Rest协议"><meta property="og:url" 
content="https://dubbo.apache.org/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest/";><meta
 property="og:title" content="Rest协议"><meta name=twitter:title c [...]
 <link href=/css/community.css rel=stylesheet><link href=/css/contactus.css 
rel=stylesheet><link href=/css/language.css rel=stylesheet><script 
src=/js/script.js></script></head><body class="td-page 
td-documentation"><header><nav class="js-navbar-scroll navbar navbar-expand 
navbar-dark flex-column flex-md-row td-navbar" data-auto-burger=primary><a 
class=navbar-brand href=/zh-cn/><span class=navbar-logo></span><span 
class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class=" 
[...]
@@ -671,7 +671,7 @@
 <label for=m-zh-cnoverviewreferenceprotocolstriple-check><a 
href=/zh-cn/overview/reference/protocols/triple/ title="Triple 协议设计理念与规范" 
class="align-left pl-0 td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstriple><span>Triple 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolstcp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolstcp-check>
 <label for=m-zh-cnoverviewreferenceprotocolstcp-check><a 
href=/zh-cn/overview/reference/protocols/tcp/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolstcp><span>Dubbo2 
协议规范</span></a></label></li><li class="td-sidebar-nav__section-title 
td-sidebar-nav__section without-child" 
id=m-zh-cnoverviewreferenceprotocolshttp-li><input type=checkbox 
id=m-zh-cnoverviewreferenceprotocolshttp-check>
 <label for=m-zh-cnoverviewreferenceprotocolshttp-check><a 
href=/zh-cn/overview/reference/protocols/http/ class="align-left pl-0 
td-sidebar-link td-sidebar-link__page" 
id=m-zh-cnoverviewreferenceprotocolshttp><span>HTTP 
协议规范</span></a></label></li></ul></li></ul></li></ul></li></ul></nav></div></div><main
 class="col-12 col-md-9 col-xl-8 pl-md-5" role=main><nav aria-label=breadcrumb 
class=td-breadcrumbs><ol class=breadcrumb><li class=breadcrumb-item><a 
href=https://dubbo.apache.org/zh-cn/o [...]
-支持 JSON、XML 和 Text 格式的请求和响应,发布和使用服务的便捷方式,也提供了服务版本控制、服务过滤、服务元数据和服务参数, 实现 Dubbo 
框架的灵活性和可伸缩性。</p><h2 id=使用场景>使用场景</h2><h2 id=使用方式>使用方式</h2><h3 
id=快速入门>快速入门</h3><p>在 dubbo 中开发一个 REST 
风格的服务会比较简单,下面以一个注册用户的简单服务为例说明。</p><p>这个服务要实现的功能是提供如下 URL(注:这个URL不是完全符合 REST 
的风格,但是更简单实用)</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-fallback data-lang=fallback><span 
style=display:flex><span>http://localhost:8 [...]
+支持 JSON、XML 和 Text 格式的请求和响应,发布和使用服务的便捷方式,也提供了服务版本控制、服务过滤、服务元数据和服务参数, 实现 Dubbo 
框架的灵活性和可伸缩性。</p><h2 id=使用场景>使用场景</h2><p>将 Dubbo 服务公开为 RESTful API,与微服务和现有 
RESTful 系统集成,实现与非 Java 客户端的互操作性,并促进混合通信。</p><h2 id=使用方式>使用方式</h2><h3 
id=快速入门>快速入门</h3><p>在 dubbo 中开发一个 REST 
风格的服务会比较简单,下面以一个注册用户的简单服务为例说明。</p><p>这个服务要实现的功能是提供如下 URL(注:这个URL不是完全符合 REST 
的风格,但是更简单实用)</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=langu [...]
 </span></span></code></pre></div><p>而任何客户端都可以将包含用户信息的 JSON 字符串 POST 到以上 URL 
来完成用户注册。</p><p>首先,开发服务的接口</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-java data-lang=java><span style=display:flex><span><span 
style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span 
style=color:#268bd2>UserService</span> <span style=color:#719e07>{</span>    
 </span></span><span style=display:flex><span>   <span 
style=color:#dc322f>void</span> <span 
style=color:#268bd2>registerUser</span><span style=color:#719e07>(</span>User 
user<span style=color:#719e07>);</span>
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
@@ -950,7 +950,7 @@
 </span></span><span style=display:flex><span><span style=color:#719e07>}</span>
 </span></span></code></pre></div><p>然后将这个 ExceptionMapper 添加到 XML 
配置中即可:</p><div class=highlight><pre tabindex=0 
style=color:#93a1a1;background-color:#002b36;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code
 class=language-xml data-lang=xml><span style=display:flex><span><span 
style=color:#268bd2>&lt;dubbo:protocol</span> name=<span 
style=color:#2aa198>&#34;rest&#34;</span> port=<span 
style=color:#2aa198>&#34;8888&#34;</span> extension=<span 
style=color:#2aa198>&#34;xxx.MyValidationExceptio [...]
 </span></span></code></pre></div><div id=pre-footer><h2>反馈</h2><p 
class=feedback--prompt>此页是否对您有帮助?</p><button class="btn btn-primary mb-4 
feedback--yes">是</button>
-<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
+<button class="btn btn-primary mb-4 
feedback--no">否</button></div><script>const 
yes=document.querySelector(".feedback--yes"),no=document.querySelector(".feedback--no");document.querySelectorAll(".feedback--link").forEach(e=>{e.href=e.href+window.location.pathname});const
 
sendFeedback=e=>{gtag||console.log("!gtag"),gtag("event","click",{event_category:"Helpful",event_label:window.location.pathname,value:e})},disableButtons=()=>{yes.disabled=!0,yes.classList.add("feedback--button__disabled
 [...]
 <a 
href="https://github.com/apache/dubbo-website/new/master/content/zh-cn/overview/mannual/java-sdk/reference-manual/protocol/rest.md?filename=change-me.md&amp;value=---%0Atitle%3A+%22Long+Page+Title%22%0AlinkTitle%3A+%22Short+Nav+Title%22%0Aweight%3A+100%0Adescription%3A+%3E-%0A+++++Page+description+for+heading+and+indexes.%0A---%0A%0A%23%23+Heading%0A%0AEdit+this+template+to+create+your+new+page.%0A%0A%2A+Give+it+a+good+name%2C+ending+in+%60.md%60+-+e.g.+%60getting-started.md%60%0A%2A+
 [...]
 <a 
href="https://github.com/apache/dubbo-website/issues/new?title=Rest%e5%8d%8f%e8%ae%ae";
 target=_blank><i class="fab fa-github fa-fw"></i> 登记问题</a>
 <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas 
fa-tasks fa-fw"></i> 提交项目问题</a></div></main><div class="d-none d-xl-block 
col-xl-2 td-toc d-print-none"><nav id=TableOfContents><ul><li><a 
href=#特性说明>特性说明</a></li><li><a href=#使用场景>使用场景</a></li><li><a 
href=#使用方式>使用方式</a><ul><li><a href=#快速入门>快速入门</a></li><li><a 
href=#rest-服务提供端>REST 服务提供端</a></li><li><a href=#http-postget-的实现>HTTP POST/GET 
的实现</a></li><li><a href=#annotation>Annotation</a></li><li><a href=#多数据 [...]
diff --git a/zh-cn/sitemap.xml b/zh-cn/sitemap.xml
index 19e7f8cbe7..7a9c74ace7 100644
--- a/zh-cn/sitemap.xml
+++ b/zh-cn/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml";><url><loc>https://dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://dubbo.apache.org/zh-cn/overview/mannual/jav
 [...]
\ No newline at end of file
+<?xml version="1.0" encoding="utf-8" standalone="yes"?><urlset 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"; 
xmlns:xhtml="http://www.w3.org/1999/xhtml";><url><loc>https://dubbo.apache.org/zh-cn/blog/2023/01/16/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E5%8D%87%E7%BA%A7-dubbo3-%E5%85%A8%E9%9D%A2%E5%8F%96%E4%BB%A3-hsf2/</loc><lastmod>2023-02-22T15:03:22+08:00</lastmod><changefreq>monthly</changefreq><priority>0.5</priority></url><url><loc>https://dubbo.apache.org/zh-cn/overview/mannual/jav
 [...]
\ No newline at end of file

Reply via email to