| <!doctype html><html lang=en class=no-js><head><meta name=ROBOTS content="INDEX, FOLLOW"><link rel=canonical href=https://dubbo.apache.org/en/docs3-v2/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.119.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=180x180><link rel=manifest href=/manifest.webmanifest><title>Rest protocol | Apache Dubbo</title><meta property="og:title" content="Rest protocol"><meta property="og:description" content="Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services) |
| Quick Start It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example. |
| The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)"><meta property="og:type" content="article"><meta property="og:url" content="https://dubbo.apache.org/en/docs3-v2/java-sdk/reference-manual/protocol/rest/"><meta property="article:section" content="docs3-v2"><meta property="article:modified_time" content="2023-01-02T18:18:49+08:00"><meta itemprop=name content="Rest protocol"><meta itemprop=description content="Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services) |
| Quick Start It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example. |
| The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)"><meta itemprop=dateModified content="2023-01-02T18:18:49+08:00"><meta itemprop=wordCount content="4416"><meta itemprop=keywords content><meta name=twitter:card content="summary"><meta name=twitter:title content="Rest protocol"><meta name=twitter:description content="Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services) |
| Quick Start It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example. |
| The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)"><script async src="https://www.googletagmanager.com/gtag/js?id=G-1TFHM5YBH0"></script> |
| <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.fe7176cbe3102a33d3e8c0c9cec61eb52508abd24a2cc1ae23ccf535a481ffde.css as=style><link href=/scss/main.min.fe7176cbe3102a33d3e8c0c9cec61eb52508abd24a2cc1ae23ccf535a481ffde.css rel=stylesheet integrity><script src=/js/jquery-3.5.1.min.js integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin=anonymous></script> |
| <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="Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services) |
| Quick Start It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example. |
| The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)"><meta property="og:description" content="Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services) |
| Quick Start It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example. |
| The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)"><meta name=twitter:description content="Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services) |
| Quick Start It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example. |
| The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)"><meta property="og:url" content="https://dubbo.apache.org/en/docs3-v2/java-sdk/reference-manual/protocol/rest/"><meta property="og:title" content="Rest protocol"><meta name=twitter:title content="Rest protocol"><meta name=twitter:image:alt content="Apache Dubbo"><meta property="og:type" content="article"><meta name=viewport content="width=device-width"><script async defer src=/js/github-buttons.js></script> |
| <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=/en/><span class=navbar-logo></span><span class="text-uppercase font-weight-bold">Apache Dubbo</span></a><div class="td-navbar-nav-scroll ml-md-auto" id=main_navbar><ul class="navbar-nav mt-2 mt-lg-0"><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/overview/><span>Overview</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class="nav-link active" href=/en/docs3-v2/><span class=active>SDK Manual</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/blog/><span>Blog</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=/en/download/><span>Download</span></a></li><li class="nav-item mr-4 mb-2 mb-lg-0"><a class=nav-link href=https://start.dubbo.apache.org/bootstrap.html target=_blank><span>Initializer</span><i class='fas fa-external-link-alt'></i></a></li><li class="nav-item dropdown d-lg-block"><a class="nav-link dropdown-toggle" href=# id=navbarDropdownMenuLink role=button data-toggle=dropdown aria-haspopup=true aria-expanded=false>English</a><div class="dropdown-menu dropdown-menu-right" aria-labelledby=navbarDropdownMenuLink><a class=dropdown-item href=/zh-cn/>中文</a></div></li><li class="nav-item dropdown d-lg-block"><div class="nav-item d-none d-lg-block"><div id=docsearch></div></div></li></ul></div></nav><section class="header-hero text-white pb-0 light-text"></section></header><div class="container-fluid td-outer"><div class=td-main><div class="row flex-md-nowrap"><div class="col-12 col-md-3 col-xl-2 td-sidebar d-print-none"><script>$(function(){$("#td-section-nav a").removeClass("active"),$("#td-section-nav #m-endocs3-v2java-sdkreference-manualprotocolrest").addClass("active"),$("#td-section-nav #m-endocs3-v2java-sdkreference-manualprotocolrest-li span").addClass("td-sidebar-nav-active-item"),$("#td-section-nav #m-endocs3-v2java-sdkreference-manualprotocolrest").parents("li").addClass("active-path"),$("#td-section-nav li.active-path").addClass("show"),$("#td-section-nav li.active-path").children("input").prop("checked",!0),$("#td-section-nav #m-endocs3-v2java-sdkreference-manualprotocolrest-li").siblings("li").addClass("show"),$("#td-section-nav #m-endocs3-v2java-sdkreference-manualprotocolrest-li").children("ul").children("li").addClass("show"),$("#td-sidebar-menu").toggleClass("d-none")})</script><div id=td-sidebar-menu class="td-sidebar__inner d-none"><div id=content-mobile><form class="td-sidebar__search d-flex align-items-center"><div id=docsearch></div><button class="btn btn-link td-sidebar__toggle d-md-none p-0 ml-3 fas fa-bars" type=button data-toggle=collapse data-target=#td-section-nav aria-controls=td-docs-nav aria-expanded=false aria-label="Toggle section navigation"></button></form></div><div id=content-desktop></div><nav class="collapse td-sidebar-nav foldable-nav" id=td-section-nav><ul class="td-sidebar-nav__section pr-md-3 ul-0"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2-li><ul class=ul-1><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdk-li><input type=checkbox id=m-endocs3-v2java-sdk-check> |
| <label for=m-endocs3-v2java-sdk-check><a href=/en/docs3-v2/java-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdk><span>Java</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkquick-start-li><input type=checkbox id=m-endocs3-v2java-sdkquick-start-check> |
| <label for=m-endocs3-v2java-sdkquick-start-check><a href=/en/docs3-v2/java-sdk/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkquick-start><span>Quick Start</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkquick-startbrief-li><input type=checkbox id=m-endocs3-v2java-sdkquick-startbrief-check> |
| <label for=m-endocs3-v2java-sdkquick-startbrief-check><a href=/en/docs3-v2/java-sdk/quick-start/brief/ title="1 - Rapidly deploy a microservice application" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkquick-startbrief><span>Quickly deploy a microservice application</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkquick-startapi-li><input type=checkbox id=m-endocs3-v2java-sdkquick-startapi-check> |
| <label for=m-endocs3-v2java-sdkquick-startapi-check><a href=/en/docs3-v2/java-sdk/quick-start/api/ title="2 - Develop microservice applications based on Dubbo API" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkquick-startapi><span>Develop microservice applications based on Dubbo API</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkquick-startspring-boot-li><input type=checkbox id=m-endocs3-v2java-sdkquick-startspring-boot-check> |
| <label for=m-endocs3-v2java-sdkquick-startspring-boot-check><a href=/en/docs3-v2/java-sdk/quick-start/spring-boot/ title="3 - Dubbo x Spring Boot to develop microservice applications" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkquick-startspring-boot><span>Dubbo x Spring Boot to develop microservice applications</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkquick-startspring-xml-li><input type=checkbox id=m-endocs3-v2java-sdkquick-startspring-xml-check> |
| <label for=m-endocs3-v2java-sdkquick-startspring-xml-check><a href=/en/docs3-v2/java-sdk/quick-start/spring-xml/ title="4 - Dubbo x Spring XML to develop microservice applications" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkquick-startspring-xml><span>Dubbo x Spring XML to develop microservice applications</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkquick-startidl-li><input type=checkbox id=m-endocs3-v2java-sdkquick-startidl-check> |
| <label for=m-endocs3-v2java-sdkquick-startidl-check><a href=/en/docs3-v2/java-sdk/quick-start/idl/ title="IDL defines cross-language services" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkquick-startidl><span>IDL Defines</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkconcepts-and-architecture-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architecture-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architecture-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkconcepts-and-architecture><span>Concepts and Architecture</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkconcepts-and-architectureoverall-architecture-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architectureoverall-architecture-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architectureoverall-architecture-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/overall-architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkconcepts-and-architectureoverall-architecture><span>Overall Architecture</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkconcepts-and-architecturecode-architecture-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architecturecode-architecture-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architecturecode-architecture-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/code-architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkconcepts-and-architecturecode-architecture><span>Code Architecture</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkconcepts-and-architectureservice-discovery-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architectureservice-discovery-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architectureservice-discovery-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkconcepts-and-architectureservice-discovery><span>Service Discovery</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkconcepts-and-architectureservice-invocation-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architectureservice-invocation-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architectureservice-invocation-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/service-invocation/ title="Service Call Extension Point" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkconcepts-and-architectureservice-invocation><span>Service Call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkconcepts-and-architecturemesh-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architecturemesh-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architecturemesh-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkconcepts-and-architecturemesh><span>Dubbo Mesh</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkconcepts-and-architecturetriple-li><input type=checkbox id=m-endocs3-v2java-sdkconcepts-and-architecturetriple-check> |
| <label for=m-endocs3-v2java-sdkconcepts-and-architecturetriple-check><a href=/en/docs3-v2/java-sdk/concepts-and-architecture/triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkconcepts-and-architecturetriple><span>Triple Protocol</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usage-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usage-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usage-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usage><span>Advanced Features</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservice-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservice-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservice-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/ title="Configuration Framework and Service Behavior" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usageservice><span>Framework and Services</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicepreflight-check-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicepreflight-check-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicepreflight-check-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/preflight-check/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicepreflight-check><span>Check at startup</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicetransaction-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicetransaction-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicetransaction-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/transaction/ title="Distributed Transactions" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicetransaction><span>Distributed Transaction</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegroup-merger-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegroup-merger-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicegroup-merger-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/group-merger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegroup-merger><span>Group Aggregation</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceport-unification-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceport-unification-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceport-unification-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/port-unification/ title="Port Protocol Multiplexing" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceport-unification><span>Port protocol multiplexing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicereactive-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicereactive-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicereactive-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/reactive/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicereactive><span>Reactive Programming</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-versions-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-versions-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-versions-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/multi-versions/ title="Service Version" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-versions><span>Service version</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicefault-tolerent-strategy-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicefault-tolerent-strategy-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicefault-tolerent-strategy-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/fault-tolerent-strategy/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicefault-tolerent-strategy><span>Cluster Fault Tolerance</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceparameter-validation-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceparameter-validation-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceparameter-validation-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/parameter-validation/ title="Parameter Validation" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceparameter-validation><span>Parameter verification</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-group-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-group-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-group-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/service-group/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-group><span>Service Group</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-call-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-call-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-call-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/async-call/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-call><span>Asynchronous call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-downgrade-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-downgrade-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-downgrade-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/service-downgrade/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceservice-downgrade><span>Service Downgrade</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-reference-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-reference-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-reference-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/generic-reference/ title="Generalization call (client generalization)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-reference><span>Generalized call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicestreaming-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicestreaming-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicestreaming-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/streaming/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicestreaming><span>Stream Communication</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceisolation-executor-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceisolation-executor-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceisolation-executor-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/isolation-executor/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceisolation-executor><span>Thread Pool Isolation</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceattachment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceattachment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceattachment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/attachment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceattachment><span>Call link to pass implicit parameters</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceexplicit-target-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceexplicit-target-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceexplicit-target-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/explicit-target/ title="Direct Connection Provider" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceexplicit-target><span>Direct Link Provider</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicespecify-ip-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicespecify-ip-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicespecify-ip-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/specify-ip/ title="Dynamic IP call" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicespecify-ip><span>Dynamic IP call at runtime</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceconsistent-hash-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceconsistent-hash-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceconsistent-hash-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/consistent-hash/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceconsistent-hash><span>Consistent Hash Site Selection</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicecontext-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicecontext-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicecontext-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/context/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicecontext><span>RPC call context</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicesubscribe-only-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicesubscribe-only-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicesubscribe-only-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/subscribe-only/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicesubscribe-only><span>Subscription Only</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceevents-notify-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceevents-notify-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceevents-notify-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/events-notify/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceevents-notify><span>Call trigger event notification</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-protocols-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-protocols-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-protocols-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/multi-protocols/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-protocols><span>Multi-protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicecallback-parameter-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicecallback-parameter-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicecallback-parameter-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/callback-parameter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicecallback-parameter><span>The server makes a callback to the client</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-mock-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-mock-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-mock-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/local-mock/ title="Local Masquerade" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-mock><span>Local camouflage</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-registry-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-registry-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-registry-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/multi-registry/ title="Multiple Registries" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicemulti-registry><span>Multiple Registration Centers</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-stub-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-stub-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-stub-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/local-stub/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-stub><span>Local Stub</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceecho-service-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceecho-service-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceecho-service-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/echo-service/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceecho-service><span>Echo Test</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceaccesslog-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceaccesslog-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceaccesslog-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/accesslog/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceaccesslog><span>Call Information Record</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-service-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-service-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-service-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/generic-service/ title="Achieving generalization (server-side generalization)" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicegeneric-service><span>Generalized call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-execute-on-provider-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-execute-on-provider-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-execute-on-provider-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/async-execute-on-provider/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceasync-execute-on-provider><span>Asynchronous execution</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-call-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-call-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-call-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/local-call/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicelocal-call><span>Local call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicedelay-publish-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicedelay-publish-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicedelay-publish-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/delay-publish/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicedelay-publish><span>Delayed Exposure</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceregistry-only-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceregistry-only-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageserviceregistry-only-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/registry-only/ title="Sign Up Only" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageserviceregistry-only><span>Sign up only</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicedistributed-transaction-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageservicedistributed-transaction-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageservicedistributed-transaction-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/service/distributed-transaction/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageservicedistributed-transaction><span>Distributed transaction support</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservability-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservability-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservability-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/ title="Observability of Dubbo" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservability><span>Observability</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitymeter-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitymeter-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitymeter-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/meter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitymeter><span>Meter</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitytracing-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitytracing-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitytracing-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/tracing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitytracing><span>Tracing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitylogging-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitylogging-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitylogging-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/logging/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitylogging><span>Logging</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilityhealth-information-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilityhealth-information-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilityhealth-information-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/health-information/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilityhealth-information><span>Health Information</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitykubernetes-probes-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitykubernetes-probes-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitykubernetes-probes-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/kubernetes-probes/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitykubernetes-probes><span>Kubernetes Probes</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitydoc-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitydoc-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitydoc-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/observability/doc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageobservabilitydoc><span>Document case</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetraffic-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetraffic-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetraffic-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/ title="Traffic Governance Rules" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usagetraffic><span>Traffic Governance</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficrouting-rule-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficrouting-rule-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficrouting-rule-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/routing-rule/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficrouting-rule><span>Routing Rules</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficconfig-rule-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficconfig-rule-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficconfig-rule-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/config-rule/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficconfig-rule><span>Configuration Rules</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-style-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-style-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-style-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-style><span>Mesh Routing Rules</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledynamic-rule-deployment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledynamic-rule-deployment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledynamic-rule-deployment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/dynamic-rule-deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledynamic-rule-deployment><span>Dynamic Routing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleweight-rule-deployment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleweight-rule-deployment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleweight-rule-deployment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/weight-rule-deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleweight-rule-deployment><span>Weight Routing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledemo-rule-deployment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledemo-rule-deployment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledemo-rule-deployment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/demo-rule-deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledemo-rule-deployment><span>Use Case</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleblue-green-deployment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleblue-green-deployment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleblue-green-deployment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/blue-green-deployment/ title="Blue-Green Deployment" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleblue-green-deployment><span>Blue-green deployment</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleab-testing-deployment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleab-testing-deployment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleab-testing-deployment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/ab-testing-deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styleab-testing-deployment><span>Ab Test</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylevirtualservice-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylevirtualservice-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylevirtualservice-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/virtualservice/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylevirtualservice><span>VirtualService</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylecanary-deployment-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylecanary-deployment-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylecanary-deployment-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/canary-deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-stylecanary-deployment><span>Canary</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledestination-rule-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledestination-rule-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledestination-rule-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/traffic/mesh-style/destination-rule/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagetrafficmesh-styledestination-rule><span>DestinationRule</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformance-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformance-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformance-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/ title="Diagnostics and Tuning" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformance><span>Diagnostics</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceprofiler-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceprofiler-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceprofiler-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/profiler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceprofiler><span>Request time-consuming sampling</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-model-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-model-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-model-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/threading-model/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-model><span>Threading Model</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelprovider-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelprovider-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelprovider-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/threading-model/provider/ title="Server Thread Model" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelprovider><span>Server-side threading model</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelconsumer-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelconsumer-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelconsumer-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/threading-model/consumer/ title="Consumer Thread Model" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancethreading-modelconsumer><span>Consumer thread model</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancerouter-snapshot-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancerouter-snapshot-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancerouter-snapshot-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/router-snapshot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancerouter-snapshot><span>Routing Status Collection</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancereference-config-cache-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancereference-config-cache-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancereference-config-cache-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/reference-config-cache/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancereference-config-cache><span>Service Reference Configuration Object Cache</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceloadbalance-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceloadbalance-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceloadbalance-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/loadbalance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceloadbalance><span>Load Balancing</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesimplify-registry-data-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesimplify-registry-data-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesimplify-registry-data-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/simplify-registry-data/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesimplify-registry-data><span>Registration Information Simplified</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceresult-cache-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceresult-cache-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceresult-cache-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/result-cache/ title="Call Result Cache" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceresult-cache><span>Call result cache</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconcurrency-control-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconcurrency-control-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconcurrency-control-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/concurrency-control/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconcurrency-control><span>Concurrency Control</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconfig-connections-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconfig-connections-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconfig-connections-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/config-connections/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceconfig-connections><span>Connection Control</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancelazy-connect-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancelazy-connect-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancelazy-connect-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/lazy-connect/ title="Delayed Connection" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancelazy-connect><span>Delayed connection</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancestickiness-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancestickiness-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancestickiness-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/stickiness/ title="Stick Connection" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancestickiness><span>Stick connection</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesupport-graalvm-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesupport-graalvm-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesupport-graalvm-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/support-graalvm/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancesupport-graalvm><span>Support Graal VM</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancedump-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancedump-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformancedump-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/dump/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformancedump><span>Export thread stack</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceserialization-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceserialization-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceserialization-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/performance/serialization/ title="Kryo and FST Serialization" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageperformanceserialization><span>Kryo and FST serialization</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurity-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurity-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagesecurity-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/security/ title="Improve service security" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurity><span>Improve Security</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityclass-check-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityclass-check-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityclass-check-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/security/class-check/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityclass-check><span>Dubbo Class Inspection Mechanism</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytls-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytls-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytls-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/security/tls/ title="TLS Support" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytls><span>TLS support</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytoken-authorization-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytoken-authorization-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytoken-authorization-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/security/token-authorization/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecuritytoken-authorization><span>Access Control</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityauth-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityauth-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityauth-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/security/auth/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usagesecurityauth><span>Service Authentication</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageothers-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageothers-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageothers-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkadvanced-features-and-usageothers><span>Others</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersservice-container-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageothersservice-container-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageothersservice-container-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/service-container/ title="Custom Service Container" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersservice-container><span>Custom service container</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersgraceful-shutdown-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageothersgraceful-shutdown-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageothersgraceful-shutdown-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/graceful-shutdown/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersgraceful-shutdown><span>Graceful shutdown</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersset-host-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageothersset-host-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageothersset-host-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/set-host/ title="Host Address Custom Exposure" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersset-host><span>Host address custom exposure</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageotherslogger-management-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageotherslogger-management-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageotherslogger-management-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/logger-management/ title="Log Framework Adaptation and Runtime Management" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageotherslogger-management><span>Log framework adaptation and runtime management</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersdubbo-kubernetes-probe-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageothersdubbo-kubernetes-probe-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageothersdubbo-kubernetes-probe-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/dubbo-kubernetes-probe/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersdubbo-kubernetes-probe><span>Kubernetes Probe</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersdocker-li><input type=checkbox id=m-endocs3-v2java-sdkadvanced-features-and-usageothersdocker-check> |
| <label for=m-endocs3-v2java-sdkadvanced-features-and-usageothersdocker-check><a href=/en/docs3-v2/java-sdk/advanced-features-and-usage/others/docker/ title="Dubbo deploy to Docker environment" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkadvanced-features-and-usageothersdocker><span>Docker Deploy</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manual-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manual-check> |
| <label for=m-endocs3-v2java-sdkreference-manual-check><a href=/en/docs3-v2/java-sdk/reference-manual/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manual><span>Reference Manual</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualconfig-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfig-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfig-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/ title="Configuration Manual" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualconfig><span>Configuration instructions</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfigoverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfigoverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfigoverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfigoverview><span>Configuration Overview</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfigapi-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfigapi-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfigapi-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/api/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfigapi><span>API Configuration</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfigannotation-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfigannotation-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfigannotation-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/annotation/ title="Annotation configuration" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfigannotation><span>Annotation Configuration</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfigxml-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfigxml-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfigxml-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/xml/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfigxml><span>XML Configuration</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfigprinciple-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfigprinciple-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfigprinciple-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/principle/ title="How Configuration Works" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfigprinciple><span>How configuration works</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfigproperties-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfigproperties-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfigproperties-check><a href=/en/docs3-v2/java-sdk/reference-manual/config/properties/ title="Configuration Item Reference Manual" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfigproperties><span>Configuration Item Manual</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualqos-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqos-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqos-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualqos><span>QOS Operation Manual</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqosoverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqosoverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqosoverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqosoverview><span>QOS Overview</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqoscommand-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqoscommand-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqoscommand-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/command/ title="Basic Command Manual" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqoscommand><span>Basic command manual</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqosservice-management-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqosservice-management-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqosservice-management-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/service-management/ title="Service Management Commands" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqosservice-management><span>Service Management Command</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqosprobe-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqosprobe-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqosprobe-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/probe/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqosprobe><span>Frame State Command</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqoslogger-management-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqoslogger-management-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqoslogger-management-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/logger-management/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqoslogger-management><span>Logging framework runtime management</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqosprofiler-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqosprofiler-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqosprofiler-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/profiler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqosprofiler><span>Performance Sampling Command</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqosrouter-snapshot-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqosrouter-snapshot-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqosrouter-snapshot-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/router-snapshot/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqosrouter-snapshot><span>Routing Status Command</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualqossecurity-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualqossecurity-check> |
| <label for=m-endocs3-v2java-sdkreference-manualqossecurity-check><a href=/en/docs3-v2/java-sdk/reference-manual/qos/security/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualqossecurity><span>Serialization Security Audit</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualprotocol-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocol-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocol-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/ title="RPC protocol" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualprotocol><span>RPC Protocol</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoloverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoloverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoloverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoloverview><span>Protocol Overview</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoldubbo-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoldubbo-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoldubbo-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/dubbo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoldubbo><span>Dubbo protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualprotocoltriple-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltriple-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltriple-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualprotocoltriple><span>Triple Protocol</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoltripleoverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltripleoverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltripleoverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoltripleoverview><span>Protocol Overview</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoltripleguide-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltripleguide-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltripleguide-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/guide/ title="Instructions for Use" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoltripleguide><span>Instructions for use</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoltriplepojo-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltriplepojo-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltriplepojo-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/pojo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoltriplepojo><span>POJO way to use Triple</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoltripleidl-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltripleidl-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltripleidl-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/idl/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoltripleidl><span>Using Triple in IDL</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoltriplemigration-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltriplemigration-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltriplemigration-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/migration/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoltriplemigration><span>Dubbo2 Protocol Migration</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocoltriplestreaming-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocoltriplestreaming-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocoltriplestreaming-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/triple/streaming/ title="Streaming Communication" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocoltriplestreaming><span>Streaming communication</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolrest-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolrest-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolrest-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/rest/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolrest><span>Rest protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolgrpc-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolgrpc-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolgrpc-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/grpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolgrpc><span>gRPC Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolhttp-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolhttp-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolhttp-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolhttp><span>HTTP protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolthrift-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolthrift-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolthrift-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/thrift/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolthrift><span>Thrift protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolrmi-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolrmi-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolrmi-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/rmi/ title="Rmi agreement" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolrmi><span>Rmi Agreement</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolredis-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolredis-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolredis-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/redis/ title="Redis protocol" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolredis><span>Redis Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolhessian-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolhessian-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolhessian-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/hessian/ title="Hessian Agreement" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolhessian><span>Hessian Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolwebservice-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolwebservice-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolwebservice-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/webservice/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolwebservice><span>Webservice protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualprotocolmemcached-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualprotocolmemcached-check> |
| <label for=m-endocs3-v2java-sdkreference-manualprotocolmemcached-check><a href=/en/docs3-v2/java-sdk/reference-manual/protocol/memcached/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualprotocolmemcached><span>Memcached protocol</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualregistry-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistry-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistry-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/ title="Registration Center Description" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistry><span>Description of Registration Center</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistryoverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistryoverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistryoverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistryoverview><span>Overview</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistryzookeeper-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistryzookeeper-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistryzookeeper-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistryzookeeper><span>Zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistrynacos-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistrynacos-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistrynacos-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistrynacos><span>Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistrymulticast-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistrymulticast-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistrymulticast-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/multicast/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistrymulticast><span>Multicast</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistryredis-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistryredis-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistryredis-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/redis/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistryredis><span>Redis</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistrymultiple-registry-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistrymultiple-registry-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistrymultiple-registry-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/multiple-registry/ title="Multiple Registries" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualregistrymultiple-registry><span>Multiple Registration Centers</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualregistrysimple-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualregistrysimple-check> |
| <label for=m-endocs3-v2java-sdkreference-manualregistrysimple-check><a href=/en/docs3-v2/java-sdk/reference-manual/registry/simple/ title="Simple Registry" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualregistrysimple><span>Simple</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualmetadata-center-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmetadata-center-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmetadata-center-check><a href=/en/docs3-v2/java-sdk/reference-manual/metadata-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualmetadata-center><span>Metadata Center</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualmetadata-centeroverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmetadata-centeroverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmetadata-centeroverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/metadata-center/overview/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualmetadata-centeroverview><span>Overview of Metadata Center</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualmetadata-centernacos-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmetadata-centernacos-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmetadata-centernacos-check><a href=/en/docs3-v2/java-sdk/reference-manual/metadata-center/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualmetadata-centernacos><span>Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualmetadata-centerzookeeper-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmetadata-centerzookeeper-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmetadata-centerzookeeper-check><a href=/en/docs3-v2/java-sdk/reference-manual/metadata-center/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualmetadata-centerzookeeper><span>Zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualmetadata-centerredis-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmetadata-centerredis-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmetadata-centerredis-check><a href=/en/docs3-v2/java-sdk/reference-manual/metadata-center/redis/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualmetadata-centerredis><span>Redis</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualconfig-center-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfig-center-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfig-center-check><a href=/en/docs3-v2/java-sdk/reference-manual/config-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualconfig-center><span>Configuration Center</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfig-centerzookeeper-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfig-centerzookeeper-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfig-centerzookeeper-check><a href=/en/docs3-v2/java-sdk/reference-manual/config-center/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfig-centerzookeeper><span>Zookeeper</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfig-centernacos-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfig-centernacos-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfig-centernacos-check><a href=/en/docs3-v2/java-sdk/reference-manual/config-center/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfig-centernacos><span>Nacos</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualconfig-centerapollo-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualconfig-centerapollo-check> |
| <label for=m-endocs3-v2java-sdkreference-manualconfig-centerapollo-check><a href=/en/docs3-v2/java-sdk/reference-manual/config-center/apollo/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualconfig-centerapollo><span>Apollo</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualmesh-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmesh-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmesh-check><a href=/en/docs3-v2/java-sdk/reference-manual/mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualmesh><span>Mesh Manual</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualmeshmesh-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualmeshmesh-check> |
| <label for=m-endocs3-v2java-sdkreference-manualmeshmesh-check><a href=/en/docs3-v2/java-sdk/reference-manual/mesh/mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualmeshmesh><span>Debug Reference Documentation</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualperformance-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualperformance-check> |
| <label for=m-endocs3-v2java-sdkreference-manualperformance-check><a href=/en/docs3-v2/java-sdk/reference-manual/performance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualperformance><span>Performance Reference Manual</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualperformancebenchmarking-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualperformancebenchmarking-check> |
| <label for=m-endocs3-v2java-sdkreference-manualperformancebenchmarking-check><a href=/en/docs3-v2/java-sdk/reference-manual/performance/benchmarking/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualperformancebenchmarking><span>Application-Level Service Discovery Benchmark</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualperformancerpc-benchmarking-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualperformancerpc-benchmarking-check> |
| <label for=m-endocs3-v2java-sdkreference-manualperformancerpc-benchmarking-check><a href=/en/docs3-v2/java-sdk/reference-manual/performance/rpc-benchmarking/ title="RPC Protocol Triple&Dubbo Benchmark" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualperformancerpc-benchmarking><span>RPC Benchmark</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualspi-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspi-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspi-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualspi><span>SPI Extension Manual</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspioverview-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspioverview-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspioverview-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/overview/ title="Dubbo SPI Overview" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspioverview><span>Dubbo SPI overview</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkreference-manualspidescription-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescription-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescription-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkreference-manualspidescription><span>Dubbo SPI extension implementation description</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionprotocol-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionprotocol-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionprotocol-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionprotocol><span>Protocol Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionfilter-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionfilter-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionfilter-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionfilter><span>Call Intercept Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptioninvoker-listener-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptioninvoker-listener-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptioninvoker-listener-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/invoker-listener/ title="Reference Listener Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptioninvoker-listener><span>Reference listener extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionexporter-listener-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionexporter-listener-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionexporter-listener-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/exporter-listener/ title="Expose Listener Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionexporter-listener><span>Expose listener extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptioncluster-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptioncluster-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptioncluster-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/cluster/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptioncluster><span>Cluster Expansion</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionrouter-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionrouter-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionrouter-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/router/ title="Route Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionrouter><span>Routing Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionload-balance-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionload-balance-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionload-balance-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/load-balance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionload-balance><span>Load Balancing Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionmerger-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionmerger-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionmerger-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/merger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionmerger><span>Merge result extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionregistry-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionregistry-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionregistry-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionregistry><span>Registry Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionmonitor-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionmonitor-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionmonitor-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/monitor/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionmonitor><span>Monitoring Center Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionextension-factory-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionextension-factory-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionextension-factory-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/extension-factory/ title="Extension Point Load Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionextension-factory><span>Extension point load extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionproxy-factory-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionproxy-factory-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionproxy-factory-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/proxy-factory/ title="Dynamic Proxy Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionproxy-factory><span>Dynamic proxy extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionreadiness-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionreadiness-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionreadiness-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/readiness/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionreadiness><span>Readiness Probe</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionstartup-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionstartup-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionstartup-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/startup/ title="Startup Startup Probe" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionstartup><span>Start Probe</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionliveness-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionliveness-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionliveness-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/liveness/ title="Liveness Survival Probe" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionliveness><span>Survival Probe</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptioncompiler-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptioncompiler-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptioncompiler-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/compiler/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptioncompiler><span>Compiler Extensions</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionconfig-center-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionconfig-center-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionconfig-center-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/config-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionconfig-center><span>Configuration Center Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionmetadata-report-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionmetadata-report-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionmetadata-report-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/metadata-report/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionmetadata-report><span>Metadata Center Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptiondispatcher-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptiondispatcher-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptiondispatcher-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/dispatcher/ title="Message Dispatch Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptiondispatcher><span>Message dispatch extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionthreadpool-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionthreadpool-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionthreadpool-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/threadpool/ title="Thread Pool Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionthreadpool><span>Thread pool extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionserialize-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionserialize-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionserialize-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/serialize/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionserialize><span>Serialization Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionremoting-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionremoting-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionremoting-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/remoting/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionremoting><span>Network Transport Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionexchanger-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionexchanger-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionexchanger-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/exchanger/ title="Information Exchange Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionexchanger><span>Information exchange extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionnetworker-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionnetworker-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionnetworker-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/networker/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionnetworker><span>Network Expansion</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionpage-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionpage-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionpage-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/page/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionpage><span>Peer-to-peer network node builder extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptiontelnet-handler-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptiontelnet-handler-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptiontelnet-handler-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/telnet-handler/ title="Telnet Command Extensions" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptiontelnet-handler><span>Telnet command extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionstatus-checker-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionstatus-checker-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionstatus-checker-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/status-checker/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionstatus-checker><span>Status Check Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptioncontainer-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptioncontainer-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptioncontainer-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/container/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptioncontainer><span>Container Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptioncache-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptioncache-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptioncache-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/cache/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptioncache><span>Cache Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionvalidation-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionvalidation-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionvalidation-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/validation/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionvalidation><span>Authentication Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionlogger-adapter-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionlogger-adapter-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionlogger-adapter-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/logger-adapter/ title="Log Adaptation Extension" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionlogger-adapter><span>Log adaptation extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptionqos-permission-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptionqos-permission-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptionqos-permission-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/qos-permission/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptionqos-permission><span>QoS Anonymous Access Verification Extension</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkreference-manualspidescriptiondubbo-spi-li><input type=checkbox id=m-endocs3-v2java-sdkreference-manualspidescriptiondubbo-spi-check> |
| <label for=m-endocs3-v2java-sdkreference-manualspidescriptiondubbo-spi-check><a href=/en/docs3-v2/java-sdk/reference-manual/spi/description/dubbo-spi/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkreference-manualspidescriptiondubbo-spi><span>Extension Point Development Guide</span></a></label></li></ul></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkupgrades-and-compatibility-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibility-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibility-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkupgrades-and-compatibility><span>Upgrade Compatibility</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibility2x-to-3x-compatibility-guide-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibility2x-to-3x-compatibility-guide-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibility2x-to-3x-compatibility-guide-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/2.x-to-3.x-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibility2x-to-3x-compatibility-guide><span>2.x to 3.x Operation Guide</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilitymigration-triple-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilitymigration-triple-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilitymigration-triple-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/migration-triple/ title="Guide to Migrating Dubbo Protocol to Triple Protocol" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibilitymigration-triple><span>Guide to migrating Dubbo protocol to Triple protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibility31-to-32-compatibility-guide-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibility31-to-32-compatibility-guide-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibility31-to-32-compatibility-guide-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/3.1-to-3.2-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibility31-to-32-compatibility-guide><span>3.1 upgrade to 3.2</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discovery-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discovery-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discovery-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/service-discovery/ title="Application Level Service Discovery" class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discovery><span>Application-Level Service Discovery</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-samples-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-samples-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-samples-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/service-discovery/service-discovery-samples/ title="Application-Level Service Discovery Migration Example" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-samples><span>Application-level service discovery migration example</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoverymigration-service-discovery-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoverymigration-service-discovery-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoverymigration-service-discovery-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/service-discovery/migration-service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoverymigration-service-discovery><span>Guidelines for migrating interface-level service discovery to application-level service discovery</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-rule-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-rule-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-rule-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/service-discovery/service-discovery-rule/ title="Application-level Service Discovery Address Migration Rules Description" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibilityservice-discoveryservice-discovery-rule><span>Application-level service discovery address migration rules</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilityserialization-upgrade-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilityserialization-upgrade-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilityserialization-upgrade-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/serialization-upgrade/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibilityserialization-upgrade><span>Serialization Protocol Upgrade Guide</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibilityprotobufinterface-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibilityprotobufinterface-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibilityprotobufinterface-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/protobufinterface/ title="Comparison of Protobuf and Interface" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibilityprotobufinterface><span>Protobuf vs Interface</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkupgrades-and-compatibility30-to-31-compatibility-guide-li><input type=checkbox id=m-endocs3-v2java-sdkupgrades-and-compatibility30-to-31-compatibility-guide-check> |
| <label for=m-endocs3-v2java-sdkupgrades-and-compatibility30-to-31-compatibility-guide-check><a href=/en/docs3-v2/java-sdk/upgrades-and-compatibility/3.0-to-3.1-compatibility-guide/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkupgrades-and-compatibility30-to-31-compatibility-guide><span>3.0 to 3.1 Operation Guide</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq-li><input type=checkbox id=m-endocs3-v2java-sdkfaq-check> |
| <label for=m-endocs3-v2java-sdkfaq-check><a href=/en/docs3-v2/java-sdk/faq/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq><span>FAQ</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq0-li><input type=checkbox id=m-endocs3-v2java-sdkfaq0-check> |
| <label for=m-endocs3-v2java-sdkfaq0-check><a href=/en/docs3-v2/java-sdk/faq/0/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq0><span>0 - Common</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq01-li><input type=checkbox id=m-endocs3-v2java-sdkfaq01-check> |
| <label for=m-endocs3-v2java-sdkfaq01-check><a href=/en/docs3-v2/java-sdk/faq/0/1/ title="0-1 - thread pool resource exhausted" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq01><span>0-1 - thread pool resources exhausted</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq02-li><input type=checkbox id=m-endocs3-v2java-sdkfaq02-check> |
| <label for=m-endocs3-v2java-sdkfaq02-check><a href=/en/docs3-v2/java-sdk/faq/0/2/ title="0-2 - Illegal property value" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq02><span>0-2 - Illegal attribute value</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq03-li><input type=checkbox id=m-endocs3-v2java-sdkfaq03-check> |
| <label for=m-endocs3-v2java-sdkfaq03-check><a href=/en/docs3-v2/java-sdk/faq/0/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq03><span>0-3 - Unable to access cache path</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq04-li><input type=checkbox id=m-endocs3-v2java-sdkfaq04-check> |
| <label for=m-endocs3-v2java-sdkfaq04-check><a href=/en/docs3-v2/java-sdk/faq/0/4/ title="0-4 - cache entry exceeded" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq04><span>0-4 - Cache entry limit exceeded</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq05-li><input type=checkbox id=m-endocs3-v2java-sdkfaq05-check> |
| <label for=m-endocs3-v2java-sdkfaq05-check><a href=/en/docs3-v2/java-sdk/faq/0/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq05><span>0-5 - Cache file size exceeded</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq06-li><input type=checkbox id=m-endocs3-v2java-sdkfaq06-check> |
| <label for=m-endocs3-v2java-sdkfaq06-check><a href=/en/docs3-v2/java-sdk/faq/0/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq06><span>0-6 - Thread interruption exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq07-li><input type=checkbox id=m-endocs3-v2java-sdkfaq07-check> |
| <label for=m-endocs3-v2java-sdkfaq07-check><a href=/en/docs3-v2/java-sdk/faq/0/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq07><span>0-7 - Reflection class not found</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq08-li><input type=checkbox id=m-endocs3-v2java-sdkfaq08-check> |
| <label for=m-endocs3-v2java-sdkfaq08-check><a href=/en/docs3-v2/java-sdk/faq/0/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq08><span>0-8 - reflection failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq09-li><input type=checkbox id=m-endocs3-v2java-sdkfaq09-check> |
| <label for=m-endocs3-v2java-sdkfaq09-check><a href=/en/docs3-v2/java-sdk/faq/0/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq09><span>0-9 - Failed to notify event</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq010-li><input type=checkbox id=m-endocs3-v2java-sdkfaq010-check> |
| <label for=m-endocs3-v2java-sdkfaq010-check><a href=/en/docs3-v2/java-sdk/faq/0/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq010><span>0-10 - The current call is no longer supported</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq011-li><input type=checkbox id=m-endocs3-v2java-sdkfaq011-check> |
| <label for=m-endocs3-v2java-sdkfaq011-check><a href=/en/docs3-v2/java-sdk/faq/0/11/ title="0-11 - Service stop failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq011><span>0-11 - Service stop failure</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq012-li><input type=checkbox id=m-endocs3-v2java-sdkfaq012-check> |
| <label for=m-endocs3-v2java-sdkfaq012-check><a href=/en/docs3-v2/java-sdk/faq/0/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq012><span>0-12 - Unknown exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq013-li><input type=checkbox id=m-endocs3-v2java-sdkfaq013-check> |
| <label for=m-endocs3-v2java-sdkfaq013-check><a href=/en/docs3-v2/java-sdk/faq/0/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq013><span>0-13 - An exception occurred in the metrics collector</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq014-li><input type=checkbox id=m-endocs3-v2java-sdkfaq014-check> |
| <label for=m-endocs3-v2java-sdkfaq014-check><a href=/en/docs3-v2/java-sdk/faq/0/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq014><span>0-14 - Monitoring exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq015-li><input type=checkbox id=m-endocs3-v2java-sdkfaq015-check> |
| <label for=m-endocs3-v2java-sdkfaq015-check><a href=/en/docs3-v2/java-sdk/faq/0/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq015><span>0-15 - An exception occurred while loading the extension class</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq016-li><input type=checkbox id=m-endocs3-v2java-sdkfaq016-check> |
| <label for=m-endocs3-v2java-sdkfaq016-check><a href=/en/docs3-v2/java-sdk/faq/0/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq016><span>0-16 - No actuators available</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq017-li><input type=checkbox id=m-endocs3-v2java-sdkfaq017-check> |
| <label for=m-endocs3-v2java-sdkfaq017-check><a href=/en/docs3-v2/java-sdk/faq/0/17/ title="0-17 - Actuator encountered an unknown exception while shutting down" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq017><span>0-17 - An unknown exception occurred while the actuator was shutting down</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq018-li><input type=checkbox id=m-endocs3-v2java-sdkfaq018-check> |
| <label for=m-endocs3-v2java-sdkfaq018-check><a href=/en/docs3-v2/java-sdk/faq/0/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq018><span>0-18 - thread pool executor is misused</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq019-li><input type=checkbox id=m-endocs3-v2java-sdkfaq019-check> |
| <label for=m-endocs3-v2java-sdkfaq019-check><a href=/en/docs3-v2/java-sdk/faq/0/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq019><span>0-19 - An exception occurred while processing the task</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq020-li><input type=checkbox id=m-endocs3-v2java-sdkfaq020-check> |
| <label for=m-endocs3-v2java-sdkfaq020-check><a href=/en/docs3-v2/java-sdk/faq/0/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq020><span>0-20 - An exception occurred while storing stack information</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq021-li><input type=checkbox id=m-endocs3-v2java-sdkfaq021-check> |
| <label for=m-endocs3-v2java-sdkfaq021-check><a href=/en/docs3-v2/java-sdk/faq/0/21/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq021><span>0-21 - Too many instances built</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq022-li><input type=checkbox id=m-endocs3-v2java-sdkfaq022-check> |
| <label for=m-endocs3-v2java-sdkfaq022-check><a href=/en/docs3-v2/java-sdk/faq/0/22/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq022><span>0-22 - I/O stream exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq023-li><input type=checkbox id=m-endocs3-v2java-sdkfaq023-check> |
| <label for=m-endocs3-v2java-sdkfaq023-check><a href=/en/docs3-v2/java-sdk/faq/0/23/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq023><span>0-23 - Serialized data conversion exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq024-li><input type=checkbox id=m-endocs3-v2java-sdkfaq024-check> |
| <label for=m-endocs3-v2java-sdkfaq024-check><a href=/en/docs3-v2/java-sdk/faq/0/24/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq024><span>0-24 - Override field value exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq025-li><input type=checkbox id=m-endocs3-v2java-sdkfaq025-check> |
| <label for=m-endocs3-v2java-sdkfaq025-check><a href=/en/docs3-v2/java-sdk/faq/0/25/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq025><span>0-25 - Error loading map</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq026-li><input type=checkbox id=m-endocs3-v2java-sdkfaq026-check> |
| <label for=m-endocs3-v2java-sdkfaq026-check><a href=/en/docs3-v2/java-sdk/faq/0/26/ title="0-26 - Warning message when metadata is published to the service" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq026><span>0-26 - Warning message when metadata publishing service</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq027-li><input type=checkbox id=m-endocs3-v2java-sdkfaq027-check> |
| <label for=m-endocs3-v2java-sdkfaq027-check><a href=/en/docs3-v2/java-sdk/faq/0/27/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq027><span>0-27 - Thread pool isolation configuration exception</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq1-li><input type=checkbox id=m-endocs3-v2java-sdkfaq1-check> |
| <label for=m-endocs3-v2java-sdkfaq1-check><a href=/en/docs3-v2/java-sdk/faq/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq1><span>1 - Registry</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq11-li><input type=checkbox id=m-endocs3-v2java-sdkfaq11-check> |
| <label for=m-endocs3-v2java-sdkfaq11-check><a href=/en/docs3-v2/java-sdk/faq/1/1/ title="1-1 - Address Illegal" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq11><span>1-1 - Illegal address</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq13-li><input type=checkbox id=m-endocs3-v2java-sdkfaq13-check> |
| <label for=m-endocs3-v2java-sdkfaq13-check><a href=/en/docs3-v2/java-sdk/faq/1/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq13><span>1-3 - URL destruction failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq14-li><input type=checkbox id=m-endocs3-v2java-sdkfaq14-check> |
| <label for=m-endocs3-v2java-sdkfaq14-check><a href=/en/docs3-v2/java-sdk/faq/1/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq14><span>1-4 - Empty address</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq15-li><input type=checkbox id=m-endocs3-v2java-sdkfaq15-check> |
| <label for=m-endocs3-v2java-sdkfaq15-check><a href=/en/docs3-v2/java-sdk/faq/1/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq15><span>1-5 - URL received without any parameters</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq16-li><input type=checkbox id=m-endocs3-v2java-sdkfaq16-check> |
| <label for=m-endocs3-v2java-sdkfaq16-check><a href=/en/docs3-v2/java-sdk/faq/1/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq16><span>1-6 - Error clearing URL cache</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq17-li><input type=checkbox id=m-endocs3-v2java-sdkfaq17-check> |
| <label for=m-endocs3-v2java-sdkfaq17-check><a href=/en/docs3-v2/java-sdk/faq/1/7/ title="1-7 - Notification registration event failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq17><span>1-7 - Failed to read and write registry service cache</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq18-li><input type=checkbox id=m-endocs3-v2java-sdkfaq18-check> |
| <label for=m-endocs3-v2java-sdkfaq18-check><a href=/en/docs3-v2/java-sdk/faq/1/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq18><span>1-8 - Unregister (unsubscribe) address failed on destroy</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq19-li><input type=checkbox id=m-endocs3-v2java-sdkfaq19-check> |
| <label for=m-endocs3-v2java-sdkfaq19-check><a href=/en/docs3-v2/java-sdk/faq/1/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq19><span>1-9 - Failed to read and write registry service cache</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq110-li><input type=checkbox id=m-endocs3-v2java-sdkfaq110-check> |
| <label for=m-endocs3-v2java-sdkfaq110-check><a href=/en/docs3-v2/java-sdk/faq/1/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq110><span>1-10 - Failed to read and write registry service cache</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq111-li><input type=checkbox id=m-endocs3-v2java-sdkfaq111-check> |
| <label for=m-endocs3-v2java-sdkfaq111-check><a href=/en/docs3-v2/java-sdk/faq/1/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq111><span>1-11 - Registration service instance creation failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq112-li><input type=checkbox id=m-endocs3-v2java-sdkfaq112-check> |
| <label for=m-endocs3-v2java-sdkfaq112-check><a href=/en/docs3-v2/java-sdk/faq/1/12/ title='1-12 - Instances of "Registry Service" have been destroyed' class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq112><span>1-12 - Instances of "Registration Service" have been destroyed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq113-li><input type=checkbox id=m-endocs3-v2java-sdkfaq113-check> |
| <label for=m-endocs3-v2java-sdkfaq113-check><a href=/en/docs3-v2/java-sdk/faq/1/13/ title="1-13 - Failed to execute task retry" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq113><span>1-13 - Failed to execute retry task</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq114-li><input type=checkbox id=m-endocs3-v2java-sdkfaq114-check> |
| <label for=m-endocs3-v2java-sdkfaq114-check><a href=/en/docs3-v2/java-sdk/faq/1/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq114><span>1-14 - Dynamic configuration recognition failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq115-li><input type=checkbox id=m-endocs3-v2java-sdkfaq115-check> |
| <label for=m-endocs3-v2java-sdkfaq115-check><a href=/en/docs3-v2/java-sdk/faq/1/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq115><span>1-15 - Failed to destroy service</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq116-li><input type=checkbox id=m-endocs3-v2java-sdkfaq116-check> |
| <label for=m-endocs3-v2java-sdkfaq116-check><a href=/en/docs3-v2/java-sdk/faq/1/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq116><span>1-16 - There are unsupported categories</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq117-li><input type=checkbox id=m-endocs3-v2java-sdkfaq117-check> |
| <label for=m-endocs3-v2java-sdkfaq117-check><a href=/en/docs3-v2/java-sdk/faq/1/17/ title="1-17 - Metadata Server Failure" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq117><span>1-17 - Metadata Server failure</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq118-li><input type=checkbox id=m-endocs3-v2java-sdkfaq118-check> |
| <label for=m-endocs3-v2java-sdkfaq118-check><a href=/en/docs3-v2/java-sdk/faq/1/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq118><span>1-18 - metadata service port not provided</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq119-li><input type=checkbox id=m-endocs3-v2java-sdkfaq119-check> |
| <label for=m-endocs3-v2java-sdkfaq119-check><a href=/en/docs3-v2/java-sdk/faq/1/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq119><span>1-19 - K8S monitoring exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq120-li><input type=checkbox id=m-endocs3-v2java-sdkfaq120-check> |
| <label for=m-endocs3-v2java-sdkfaq120-check><a href=/en/docs3-v2/java-sdk/faq/1/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq120><span>1-20 - K8S Pod does not exist</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq121-li><input type=checkbox id=m-endocs3-v2java-sdkfaq121-check> |
| <label for=m-endocs3-v2java-sdkfaq121-check><a href=/en/docs3-v2/java-sdk/faq/1/21/ title="1-21 - K8S No Service Available" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq121><span>1-21 - No service available for K8S</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq122-li><input type=checkbox id=m-endocs3-v2java-sdkfaq122-check> |
| <label for=m-endocs3-v2java-sdkfaq122-check><a href=/en/docs3-v2/java-sdk/faq/1/22/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq122><span>1-22 - K8S configuration address error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq123-li><input type=checkbox id=m-endocs3-v2java-sdkfaq123-check> |
| <label for=m-endocs3-v2java-sdkfaq123-check><a href=/en/docs3-v2/java-sdk/faq/1/23/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq123><span>1-23 - Unable to download files via url</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq124-li><input type=checkbox id=m-endocs3-v2java-sdkfaq124-check> |
| <label for=m-endocs3-v2java-sdkfaq124-check><a href=/en/docs3-v2/java-sdk/faq/1/24/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq124><span>1-24 - ZK startup exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq125-li><input type=checkbox id=m-endocs3-v2java-sdkfaq125-check> |
| <label for=m-endocs3-v2java-sdkfaq125-check><a href=/en/docs3-v2/java-sdk/faq/1/25/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq125><span>1-25 - ZK destruction exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq126-li><input type=checkbox id=m-endocs3-v2java-sdkfaq126-check> |
| <label for=m-endocs3-v2java-sdkfaq126-check><a href=/en/docs3-v2/java-sdk/faq/1/26/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq126><span>1-26 - xDS certificate generation failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq127-li><input type=checkbox id=m-endocs3-v2java-sdkfaq127-check> |
| <label for=m-endocs3-v2java-sdkfaq127-check><a href=/en/docs3-v2/java-sdk/faq/1/27/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq127><span>1-27 - K8S monitoring exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq128-li><input type=checkbox id=m-endocs3-v2java-sdkfaq128-check> |
| <label for=m-endocs3-v2java-sdkfaq128-check><a href=/en/docs3-v2/java-sdk/faq/1/28/ title="1-28 - xDS Stub Error" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq128><span>1-28 - xDS stub error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq129-li><input type=checkbox id=m-endocs3-v2java-sdkfaq129-check> |
| <label for=m-endocs3-v2java-sdkfaq129-check><a href=/en/docs3-v2/java-sdk/faq/1/29/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq129><span>1-29 - xDS failed to read file</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq130-li><input type=checkbox id=m-endocs3-v2java-sdkfaq130-check> |
| <label for=m-endocs3-v2java-sdkfaq130-check><a href=/en/docs3-v2/java-sdk/faq/1/30/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq130><span>1-30 - xDS request failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq131-li><input type=checkbox id=m-endocs3-v2java-sdkfaq131-check> |
| <label for=m-endocs3-v2java-sdkfaq131-check><a href=/en/docs3-v2/java-sdk/faq/1/31/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq131><span>1-31 - xDS Response Failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq132-li><input type=checkbox id=m-endocs3-v2java-sdkfaq132-check> |
| <label for=m-endocs3-v2java-sdkfaq132-check><a href=/en/docs3-v2/java-sdk/faq/1/32/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq132><span>1-32 - xDS Channel initialization failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq133-li><input type=checkbox id=m-endocs3-v2java-sdkfaq133-check> |
| <label for=m-endocs3-v2java-sdkfaq133-check><a href=/en/docs3-v2/java-sdk/faq/1/33/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq133><span>1-33 - xDS service discovery initialization failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq134-li><input type=checkbox id=m-endocs3-v2java-sdkfaq134-check> |
| <label for=m-endocs3-v2java-sdkfaq134-check><a href=/en/docs3-v2/java-sdk/faq/1/34/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq134><span>1-34 - Error parsing xDS</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq135-li><input type=checkbox id=m-endocs3-v2java-sdkfaq135-check> |
| <label for=m-endocs3-v2java-sdkfaq135-check><a href=/en/docs3-v2/java-sdk/faq/1/35/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq135><span>1-35 - ZK Anomaly</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq136-li><input type=checkbox id=m-endocs3-v2java-sdkfaq136-check> |
| <label for=m-endocs3-v2java-sdkfaq136-check><a href=/en/docs3-v2/java-sdk/faq/1/36/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq136><span>1-36 - Unknown exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq137-li><input type=checkbox id=m-endocs3-v2java-sdkfaq137-check> |
| <label for=m-endocs3-v2java-sdkfaq137-check><a href=/en/docs3-v2/java-sdk/faq/1/37/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq137><span>1-37 - Nacos Anomaly</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq138-li><input type=checkbox id=m-endocs3-v2java-sdkfaq138-check> |
| <label for=m-endocs3-v2java-sdkfaq138-check><a href=/en/docs3-v2/java-sdk/faq/1/38/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq138><span>1-38 - Socket connection exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq139-li><input type=checkbox id=m-endocs3-v2java-sdkfaq139-check> |
| <label for=m-endocs3-v2java-sdkfaq139-check><a href=/en/docs3-v2/java-sdk/faq/1/39/ title="1-39 - Failed to fetch metadata" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq139><span>1-39 - Failed to get metadata</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq140-li><input type=checkbox id=m-endocs3-v2java-sdkfaq140-check> |
| <label for=m-endocs3-v2java-sdkfaq140-check><a href=/en/docs3-v2/java-sdk/faq/1/40/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq140><span>1-40 - Route waiting too long</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq141-li><input type=checkbox id=m-endocs3-v2java-sdkfaq141-check> |
| <label for=m-endocs3-v2java-sdkfaq141-check><a href=/en/docs3-v2/java-sdk/faq/1/41/ title="1-41 - Istio exceptions" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq141><span>1-41 - Istio exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq142-li><input type=checkbox id=m-endocs3-v2java-sdkfaq142-check> |
| <label for=m-endocs3-v2java-sdkfaq142-check><a href=/en/docs3-v2/java-sdk/faq/1/42/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq142><span>1-42 - Nacos has a low version service</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq2-li><input type=checkbox id=m-endocs3-v2java-sdkfaq2-check> |
| <label for=m-endocs3-v2java-sdkfaq2-check><a href=/en/docs3-v2/java-sdk/faq/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq2><span>2 - Routing</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq21-li><input type=checkbox id=m-endocs3-v2java-sdkfaq21-check> |
| <label for=m-endocs3-v2java-sdkfaq21-check><a href=/en/docs3-v2/java-sdk/faq/2/1/ title="2-1 - Routing execution failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq21><span>2-1 - Execution of routing address selection failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq211-li><input type=checkbox id=m-endocs3-v2java-sdkfaq211-check> |
| <label for=m-endocs3-v2java-sdkfaq211-check><a href=/en/docs3-v2/java-sdk/faq/2/11/ title="2-11 - Label Routing Rules Illegal" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq211><span>2-11 - Label routing rules are invalid</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq212-li><input type=checkbox id=m-endocs3-v2java-sdkfaq212-check> |
| <label for=m-endocs3-v2java-sdkfaq212-check><a href=/en/docs3-v2/java-sdk/faq/2/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq212><span>2-12 - Label route acquisition provider application name is empty</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq213-li><input type=checkbox id=m-endocs3-v2java-sdkfaq213-check> |
| <label for=m-endocs3-v2java-sdkfaq213-check><a href=/en/docs3-v2/java-sdk/faq/2/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq213><span>2-13 - Failed to receive and load mesh routing rules</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq215-li><input type=checkbox id=m-endocs3-v2java-sdkfaq215-check> |
| <label for=m-endocs3-v2java-sdkfaq215-check><a href=/en/docs3-v2/java-sdk/faq/2/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq215><span>2-15 - Routing rule parsing failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq214-li><input type=checkbox id=m-endocs3-v2java-sdkfaq214-check> |
| <label for=m-endocs3-v2java-sdkfaq214-check><a href=/en/docs3-v2/java-sdk/faq/2/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq214><span>2-15 - Script route execution failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq216-li><input type=checkbox id=m-endocs3-v2java-sdkfaq216-check> |
| <label for=m-endocs3-v2java-sdkfaq216-check><a href=/en/docs3-v2/java-sdk/faq/2/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq216><span>2-16 - Request retries failed multiple times</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq217-li><input type=checkbox id=m-endocs3-v2java-sdkfaq217-check> |
| <label for=m-endocs3-v2java-sdkfaq217-check><a href=/en/docs3-v2/java-sdk/faq/2/17/ title="2-17 - mock request failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq217><span>2-17 - Mock request failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq218-li><input type=checkbox id=m-endocs3-v2java-sdkfaq218-check> |
| <label for=m-endocs3-v2java-sdkfaq218-check><a href=/en/docs3-v2/java-sdk/faq/2/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq218><span>2-18 - Mesh routing rules are not monitored</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq219-li><input type=checkbox id=m-endocs3-v2java-sdkfaq219-check> |
| <label for=m-endocs3-v2java-sdkfaq219-check><a href=/en/docs3-v2/java-sdk/faq/2/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq219><span>2-19 - Asynchronous request failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq22-li><input type=checkbox id=m-endocs3-v2java-sdkfaq22-check> |
| <label for=m-endocs3-v2java-sdkfaq22-check><a href=/en/docs3-v2/java-sdk/faq/2/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq22><span>2-2 - No Provider available (address not found)</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq23-li><input type=checkbox id=m-endocs3-v2java-sdkfaq23-check> |
| <label for=m-endocs3-v2java-sdkfaq23-check><a href=/en/docs3-v2/java-sdk/faq/2/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq23><span>2-3 - Routing shutdown failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq24-li><input type=checkbox id=m-endocs3-v2java-sdkfaq24-check> |
| <label for=m-endocs3-v2java-sdkfaq24-check><a href=/en/docs3-v2/java-sdk/faq/2/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq24><span>2-4 - Merger interface failed to load</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq25-li><input type=checkbox id=m-endocs3-v2java-sdkfaq25-check> |
| <label for=m-endocs3-v2java-sdkfaq25-check><a href=/en/docs3-v2/java-sdk/faq/2/5/ title="2-5 - Filter Provider Failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq25><span>2-5 - Screening providers failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq26-li><input type=checkbox id=m-endocs3-v2java-sdkfaq26-check> |
| <label for=m-endocs3-v2java-sdkfaq26-check><a href=/en/docs3-v2/java-sdk/faq/2/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq26><span>2-6 - Conditional routing filter provider list is empty</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq27-li><input type=checkbox id=m-endocs3-v2java-sdkfaq27-check> |
| <label for=m-endocs3-v2java-sdkfaq27-check><a href=/en/docs3-v2/java-sdk/faq/2/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq27><span>2-7 - Conditional routing execution exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq28-li><input type=checkbox id=m-endocs3-v2java-sdkfaq28-check> |
| <label for=m-endocs3-v2java-sdkfaq28-check><a href=/en/docs3-v2/java-sdk/faq/2/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq28><span>2-8 - The provider returned an abnormal response</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq29-li><input type=checkbox id=m-endocs3-v2java-sdkfaq29-check> |
| <label for=m-endocs3-v2java-sdkfaq29-check><a href=/en/docs3-v2/java-sdk/faq/2/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq29><span>2-9 - Increase timeout check task failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq210-li><input type=checkbox id=m-endocs3-v2java-sdkfaq210-check> |
| <label for=m-endocs3-v2java-sdkfaq210-check><a href=/en/docs3-v2/java-sdk/faq/2/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq210><span>2-10 - Failed to call service provider</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq220-li><input type=checkbox id=m-endocs3-v2java-sdkfaq220-check> |
| <label for=m-endocs3-v2java-sdkfaq220-check><a href=/en/docs3-v2/java-sdk/faq/2/20/ title="2-20 - Failed to get grouped results merged" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq220><span>2-20 - Failed to get grouped results combined</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq3-li><input type=checkbox id=m-endocs3-v2java-sdkfaq3-check> |
| <label for=m-endocs3-v2java-sdkfaq3-check><a href=/en/docs3-v2/java-sdk/faq/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq3><span>3 - Proxy</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq31-li><input type=checkbox id=m-endocs3-v2java-sdkfaq31-check> |
| <label for=m-endocs3-v2java-sdkfaq31-check><a href=/en/docs3-v2/java-sdk/faq/3/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq31><span>3-1 - Failed to convert address to Invoker</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq32-li><input type=checkbox id=m-endocs3-v2java-sdkfaq32-check> |
| <label for=m-endocs3-v2java-sdkfaq32-check><a href=/en/docs3-v2/java-sdk/faq/3/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq32><span>3-2 - Publish or push service failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq33-li><input type=checkbox id=m-endocs3-v2java-sdkfaq33-check> |
| <label for=m-endocs3-v2java-sdkfaq33-check><a href=/en/docs3-v2/java-sdk/faq/3/3/ title="3-3 - Failed to generate bytecode via Javassist" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq33><span>3-3 - Failed to generate bytecode through Javassist</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq34-li><input type=checkbox id=m-endocs3-v2java-sdkfaq34-check> |
| <label for=m-endocs3-v2java-sdkfaq34-check><a href=/en/docs3-v2/java-sdk/faq/3/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq34><span>3-4 - Client sending request timed out</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq35-li><input type=checkbox id=m-endocs3-v2java-sdkfaq35-check> |
| <label for=m-endocs3-v2java-sdkfaq35-check><a href=/en/docs3-v2/java-sdk/faq/3/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq35><span>3-5 - An exception occurred in the asynchronous response</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq36-li><input type=checkbox id=m-endocs3-v2java-sdkfaq36-check> |
| <label for=m-endocs3-v2java-sdkfaq36-check><a href=/en/docs3-v2/java-sdk/faq/3/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq36><span>3-6 - An exception occurred in the proxy execution service</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq37-li><input type=checkbox id=m-endocs3-v2java-sdkfaq37-check> |
| <label for=m-endocs3-v2java-sdkfaq37-check><a href=/en/docs3-v2/java-sdk/faq/3/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq37><span>3-7 - Server response timed out</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq38-li><input type=checkbox id=m-endocs3-v2java-sdkfaq38-check> |
| <label for=m-endocs3-v2java-sdkfaq38-check><a href=/en/docs3-v2/java-sdk/faq/3/8/ title="3-8 - Proxy Failure" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq38><span>3-8 - Agent failed</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq4-li><input type=checkbox id=m-endocs3-v2java-sdkfaq4-check> |
| <label for=m-endocs3-v2java-sdkfaq4-check><a href=/en/docs3-v2/java-sdk/faq/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq4><span>4 - Protocol</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq41-li><input type=checkbox id=m-endocs3-v2java-sdkfaq41-check> |
| <label for=m-endocs3-v2java-sdkfaq41-check><a href=/en/docs3-v2/java-sdk/faq/4/1/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq41><span>4-1 - Unsupported protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq42-li><input type=checkbox id=m-endocs3-v2java-sdkfaq42-check> |
| <label for=m-endocs3-v2java-sdkfaq42-check><a href=/en/docs3-v2/java-sdk/faq/4/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq42><span>4-2 - Serialization optimizer initial error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq43-li><input type=checkbox id=m-endocs3-v2java-sdkfaq43-check> |
| <label for=m-endocs3-v2java-sdkfaq43-check><a href=/en/docs3-v2/java-sdk/faq/4/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq43><span>4-3 - Interface reference call failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq44-li><input type=checkbox id=m-endocs3-v2java-sdkfaq44-check> |
| <label for=m-endocs3-v2java-sdkfaq44-check><a href=/en/docs3-v2/java-sdk/faq/4/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq44><span>4-4 - Non-safe serialization method</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq45-li><input type=checkbox id=m-endocs3-v2java-sdkfaq45-check> |
| <label for=m-endocs3-v2java-sdkfaq45-check><a href=/en/docs3-v2/java-sdk/faq/4/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq45><span>4-5 - Stream closed exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq46-li><input type=checkbox id=m-endocs3-v2java-sdkfaq46-check> |
| <label for=m-endocs3-v2java-sdkfaq46-check><a href=/en/docs3-v2/java-sdk/faq/4/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq46><span>4-6 - Deserialization failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq47-li><input type=checkbox id=m-endocs3-v2java-sdkfaq47-check> |
| <label for=m-endocs3-v2java-sdkfaq47-check><a href=/en/docs3-v2/java-sdk/faq/4/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq47><span>4-7 - An error occurred while closing the client</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq48-li><input type=checkbox id=m-endocs3-v2java-sdkfaq48-check> |
| <label for=m-endocs3-v2java-sdkfaq48-check><a href=/en/docs3-v2/java-sdk/faq/4/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq48><span>4-8 - An error occurred while closing the server</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq49-li><input type=checkbox id=m-endocs3-v2java-sdkfaq49-check> |
| <label for=m-endocs3-v2java-sdkfaq49-check><a href=/en/docs3-v2/java-sdk/faq/4/9/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq49><span>4-9 - Parse failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq410-li><input type=checkbox id=m-endocs3-v2java-sdkfaq410-check> |
| <label for=m-endocs3-v2java-sdkfaq410-check><a href=/en/docs3-v2/java-sdk/faq/4/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq410><span>4-10 - Triple serialization result failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq411-li><input type=checkbox id=m-endocs3-v2java-sdkfaq411-check> |
| <label for=m-endocs3-v2java-sdkfaq411-check><a href=/en/docs3-v2/java-sdk/faq/4/11/ title="4-11 - Failed to initiate request" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq411><span>4-11 - Failed to initiate the request</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq412-li><input type=checkbox id=m-endocs3-v2java-sdkfaq412-check> |
| <label for=m-endocs3-v2java-sdkfaq412-check><a href=/en/docs3-v2/java-sdk/faq/4/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq412><span>4-12 - Failed to create Triple stream</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq413-li><input type=checkbox id=m-endocs3-v2java-sdkfaq413-check> |
| <label for=m-endocs3-v2java-sdkfaq413-check><a href=/en/docs3-v2/java-sdk/faq/4/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq413><span>4-13 - Server Timeout</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq414-li><input type=checkbox id=m-endocs3-v2java-sdkfaq414-check> |
| <label for=m-endocs3-v2java-sdkfaq414-check><a href=/en/docs3-v2/java-sdk/faq/4/14/ title="4-14 - Response Result Failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq414><span>4-14 - Response result failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq415-li><input type=checkbox id=m-endocs3-v2java-sdkfaq415-check> |
| <label for=m-endocs3-v2java-sdkfaq415-check><a href=/en/docs3-v2/java-sdk/faq/4/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq415><span>4-15 - Client Stream Listener</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq416-li><input type=checkbox id=m-endocs3-v2java-sdkfaq416-check> |
| <label for=m-endocs3-v2java-sdkfaq416-check><a href=/en/docs3-v2/java-sdk/faq/4/16/ title="4-16 - Service Closed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq416><span>4-16 - Service is closed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq417-li><input type=checkbox id=m-endocs3-v2java-sdkfaq417-check> |
| <label for=m-endocs3-v2java-sdkfaq417-check><a href=/en/docs3-v2/java-sdk/faq/4/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq417><span>4-17 - Error closing all callers</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq418-li><input type=checkbox id=m-endocs3-v2java-sdkfaq418-check> |
| <label for=m-endocs3-v2java-sdkfaq418-check><a href=/en/docs3-v2/java-sdk/faq/4/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq418><span>4-18 - Unable to get service model from call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq419-li><input type=checkbox id=m-endocs3-v2java-sdkfaq419-check> |
| <label for=m-endocs3-v2java-sdkfaq419-check><a href=/en/docs3-v2/java-sdk/faq/4/19/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq419><span>4-19 - Parameter values may be wrong</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq420-li><input type=checkbox id=m-endocs3-v2java-sdkfaq420-check> |
| <label for=m-endocs3-v2java-sdkfaq420-check><a href=/en/docs3-v2/java-sdk/faq/4/20/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq420><span>4-20 - Data decoding failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq421-li><input type=checkbox id=m-endocs3-v2java-sdkfaq421-check> |
| <label for=m-endocs3-v2java-sdkfaq421-check><a href=/en/docs3-v2/java-sdk/faq/4/21/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq421><span>4-21 - Insecure serialized data detected</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq5-li><input type=checkbox id=m-endocs3-v2java-sdkfaq5-check> |
| <label for=m-endocs3-v2java-sdkfaq5-check><a href=/en/docs3-v2/java-sdk/faq/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq5><span>5 - Config Center</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq51-li><input type=checkbox id=m-endocs3-v2java-sdkfaq51-check> |
| <label for=m-endocs3-v2java-sdkfaq51-check><a href=/en/docs3-v2/java-sdk/faq/5/1/ title="5-1 - Failed to connect to configuration center" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq51><span>5-1 - Failed to connect to the configuration center</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq52-li><input type=checkbox id=m-endocs3-v2java-sdkfaq52-check> |
| <label for=m-endocs3-v2java-sdkfaq52-check><a href=/en/docs3-v2/java-sdk/faq/5/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq52><span>5-2 - Failed to register/unregister shutdown hook method</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq53-li><input type=checkbox id=m-endocs3-v2java-sdkfaq53-check> |
| <label for=m-endocs3-v2java-sdkfaq53-check><a href=/en/docs3-v2/java-sdk/faq/5/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq53><span>5-3 - An unexpected error occurred while destroying a method call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq54-li><input type=checkbox id=m-endocs3-v2java-sdkfaq54-check> |
| <label for=m-endocs3-v2java-sdkfaq54-check><a href=/en/docs3-v2/java-sdk/faq/5/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq54><span>5-4 - Method not found in service interface</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq55-li><input type=checkbox id=m-endocs3-v2java-sdkfaq55-check> |
| <label for=m-endocs3-v2java-sdkfaq55-check><a href=/en/docs3-v2/java-sdk/faq/5/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq55><span>5-5 - Unable to get env variables</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq56-li><input type=checkbox id=m-endocs3-v2java-sdkfaq56-check> |
| <label for=m-endocs3-v2java-sdkfaq56-check><a href=/en/docs3-v2/java-sdk/faq/5/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq56><span>5-6 - Attribute Conflict of Interface Type</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq57-li><input type=checkbox id=m-endocs3-v2java-sdkfaq57-check> |
| <label for=m-endocs3-v2java-sdkfaq57-check><a href=/en/docs3-v2/java-sdk/faq/5/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq57><span>5-7 - An unexpected error occurred while canceling the export</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq58-li><input type=checkbox id=m-endocs3-v2java-sdkfaq58-check> |
| <label for=m-endocs3-v2java-sdkfaq58-check><a href=/en/docs3-v2/java-sdk/faq/5/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq58><span>5-8 - The protocol will use a random available port</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq59-li><input type=checkbox id=m-endocs3-v2java-sdkfaq59-check> |
| <label for=m-endocs3-v2java-sdkfaq59-check><a href=/en/docs3-v2/java-sdk/faq/5/9/ title="5-9 - Service Configuration Export Failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq59><span>5-9 - Service configuration export failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq510-li><input type=checkbox id=m-endocs3-v2java-sdkfaq510-check> |
| <label for=m-endocs3-v2java-sdkfaq510-check><a href=/en/docs3-v2/java-sdk/faq/5/10/ title="5-10 - Registration interface application mapping failed for service" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq510><span>5-10 - Service's registration interface application mapping failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq511-li><input type=checkbox id=m-endocs3-v2java-sdkfaq511-check> |
| <label for=m-endocs3-v2java-sdkfaq511-check><a href=/en/docs3-v2/java-sdk/faq/5/11/ title="5-11 - Registration Instance Error" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq511><span>5-11 - Registration instance error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq512-li><input type=checkbox id=m-endocs3-v2java-sdkfaq512-check> |
| <label for=m-endocs3-v2java-sdkfaq512-check><a href=/en/docs3-v2/java-sdk/faq/5/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq512><span>5-12 - Refresh instance and metadata errors</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq513-li><input type=checkbox id=m-endocs3-v2java-sdkfaq513-check> |
| <label for=m-endocs3-v2java-sdkfaq513-check><a href=/en/docs3-v2/java-sdk/faq/5/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq513><span>5-13 - Model cannot be destroyed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq514-li><input type=checkbox id=m-endocs3-v2java-sdkfaq514-check> |
| <label for=m-endocs3-v2java-sdkfaq514-check><a href=/en/docs3-v2/java-sdk/faq/5/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq514><span>5-14 - Model startup error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq515-li><input type=checkbox id=m-endocs3-v2java-sdkfaq515-check> |
| <label for=m-endocs3-v2java-sdkfaq515-check><a href=/en/docs3-v2/java-sdk/faq/5/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq515><span>5-15 - Model Reference Error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq516-li><input type=checkbox id=m-endocs3-v2java-sdkfaq516-check> |
| <label for=m-endocs3-v2java-sdkfaq516-check><a href=/en/docs3-v2/java-sdk/faq/5/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq516><span>5-16 - Unable to find any valid agreements</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq517-li><input type=checkbox id=m-endocs3-v2java-sdkfaq517-check> |
| <label for=m-endocs3-v2java-sdkfaq517-check><a href=/en/docs3-v2/java-sdk/faq/5/17/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq517><span>5-17 - Parameter value format error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq518-li><input type=checkbox id=m-endocs3-v2java-sdkfaq518-check> |
| <label for=m-endocs3-v2java-sdkfaq518-check><a href=/en/docs3-v2/java-sdk/faq/5/18/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq518><span>5-18 - Notification registration event failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq519-li><input type=checkbox id=m-endocs3-v2java-sdkfaq519-check> |
| <label for=m-endocs3-v2java-sdkfaq519-check><a href=/en/docs3-v2/java-sdk/faq/5/19/ title="5-19 - Embedded ZooKeeper running abnormally" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq519><span>5-19 - The embedded ZooKeeper runs abnormally</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq520-li><input type=checkbox id=m-endocs3-v2java-sdkfaq520-check> |
| <label for=m-endocs3-v2java-sdkfaq520-check><a href=/en/docs3-v2/java-sdk/faq/5/20/ title="5-20 - Error occurred while stopping dubbo module" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq520><span>5-20 - An error occurred while stopping the dubbo module</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq521-li><input type=checkbox id=m-endocs3-v2java-sdkfaq521-check> |
| <label for=m-endocs3-v2java-sdkfaq521-check><a href=/en/docs3-v2/java-sdk/faq/5/21/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq521><span>5-21 - An exception occurred when the service was destroyed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq522-li><input type=checkbox id=m-endocs3-v2java-sdkfaq522-check> |
| <label for=m-endocs3-v2java-sdkfaq522-check><a href=/en/docs3-v2/java-sdk/faq/5/22/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq522><span>5-22 - An error occurred while initializing the registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq523-li><input type=checkbox id=m-endocs3-v2java-sdkfaq523-check> |
| <label for=m-endocs3-v2java-sdkfaq523-check><a href=/en/docs3-v2/java-sdk/faq/5/23/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq523><span>5-23 - Waiting for export/reference service exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq524-li><input type=checkbox id=m-endocs3-v2java-sdkfaq524-check> |
| <label for=m-endocs3-v2java-sdkfaq524-check><a href=/en/docs3-v2/java-sdk/faq/5/24/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq524><span>5-24 - An exception occurred while asynchronously waiting for the reference service</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq525-li><input type=checkbox id=m-endocs3-v2java-sdkfaq525-check> |
| <label for=m-endocs3-v2java-sdkfaq525-check><a href=/en/docs3-v2/java-sdk/faq/5/25/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq525><span>5-25 - Undefined exception from custom implementation</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq526-li><input type=checkbox id=m-endocs3-v2java-sdkfaq526-check> |
| <label for=m-endocs3-v2java-sdkfaq526-check><a href=/en/docs3-v2/java-sdk/faq/5/26/ title="5-26 - Metadata Exported" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq526><span>5-26 - Metadata exported</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq527-li><input type=checkbox id=m-endocs3-v2java-sdkfaq527-check> |
| <label for=m-endocs3-v2java-sdkfaq527-check><a href=/en/docs3-v2/java-sdk/faq/5/27/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq527><span>5-27 - Inner class API is misused</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq528-li><input type=checkbox id=m-endocs3-v2java-sdkfaq528-check> |
| <label for=m-endocs3-v2java-sdkfaq528-check><a href=/en/docs3-v2/java-sdk/faq/5/28/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq528><span>5-28 - No available annotation found</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq529-li><input type=checkbox id=m-endocs3-v2java-sdkfaq529-check> |
| <label for=m-endocs3-v2java-sdkfaq529-check><a href=/en/docs3-v2/java-sdk/faq/5/29/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq529><span>5-29 - Scan package not configured</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq530-li><input type=checkbox id=m-endocs3-v2java-sdkfaq530-check> |
| <label for=m-endocs3-v2java-sdkfaq530-check><a href=/en/docs3-v2/java-sdk/faq/5/30/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq530><span>5-30 - Duplicate bean definition</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq531-li><input type=checkbox id=m-endocs3-v2java-sdkfaq531-check> |
| <label for=m-endocs3-v2java-sdkfaq531-check><a href=/en/docs3-v2/java-sdk/faq/5/31/ title="5-31 - Status Check Error" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq531><span>5-31 - Status check error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq532-li><input type=checkbox id=m-endocs3-v2java-sdkfaq532-check> |
| <label for=m-endocs3-v2java-sdkfaq532-check><a href=/en/docs3-v2/java-sdk/faq/5/32/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq532><span>5-32 - Apollo disconnected with an error</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq533-li><input type=checkbox id=m-endocs3-v2java-sdkfaq533-check> |
| <label for=m-endocs3-v2java-sdkfaq533-check><a href=/en/docs3-v2/java-sdk/faq/5/33/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq533><span>5-33 - An exception occurred in the Apollo configuration update event</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq534-li><input type=checkbox id=m-endocs3-v2java-sdkfaq534-check> |
| <label for=m-endocs3-v2java-sdkfaq534-check><a href=/en/docs3-v2/java-sdk/faq/5/34/ title="5-34 - NACOS Error" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq534><span>5-34 - NACOS went wrong</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq535-li><input type=checkbox id=m-endocs3-v2java-sdkfaq535-check> |
| <label for=m-endocs3-v2java-sdkfaq535-check><a href=/en/docs3-v2/java-sdk/faq/5/35/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq535><span>5-35 - Container initialization failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq536-li><input type=checkbox id=m-endocs3-v2java-sdkfaq536-check> |
| <label for=m-endocs3-v2java-sdkfaq536-check><a href=/en/docs3-v2/java-sdk/faq/5/36/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq536><span>5-36 - An error occurred during filter validation</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq537-li><input type=checkbox id=m-endocs3-v2java-sdkfaq537-check> |
| <label for=m-endocs3-v2java-sdkfaq537-check><a href=/en/docs3-v2/java-sdk/faq/5/37/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq537><span>5-37 - An error occurred in the processing of dynamic configuration monitoring</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq538-li><input type=checkbox id=m-endocs3-v2java-sdkfaq538-check> |
| <label for=m-endocs3-v2java-sdkfaq538-check><a href=/en/docs3-v2/java-sdk/faq/5/38/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq538><span>5-38 - Configuration parameter undefined</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq539-li><input type=checkbox id=m-endocs3-v2java-sdkfaq539-check> |
| <label for=m-endocs3-v2java-sdkfaq539-check><a href=/en/docs3-v2/java-sdk/faq/5/39/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq539><span>5-39 - An error occurred in the Dubbo configuration bean initializer</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq540-li><input type=checkbox id=m-endocs3-v2java-sdkfaq540-check> |
| <label for=m-endocs3-v2java-sdkfaq540-check><a href=/en/docs3-v2/java-sdk/faq/5/40/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq540><span>5-40 - Dubbo configuration bean not found</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq541-li><input type=checkbox id=m-endocs3-v2java-sdkfaq541-check> |
| <label for=m-endocs3-v2java-sdkfaq541-check><a href=/en/docs3-v2/java-sdk/faq/5/41/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq541><span>5-41 - Failed to read SSL certificate</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq542-li><input type=checkbox id=m-endocs3-v2java-sdkfaq542-check> |
| <label for=m-endocs3-v2java-sdkfaq542-check><a href=/en/docs3-v2/java-sdk/faq/5/42/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq542><span>5-42 - Dubbo certificate issuance failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq543-li><input type=checkbox id=m-endocs3-v2java-sdkfaq543-check> |
| <label for=m-endocs3-v2java-sdkfaq543-check><a href=/en/docs3-v2/java-sdk/faq/5/43/ title="5-43 - Dubbo certificate signing connection is not secure" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq543><span>5-43 - Dubbo certificate signing connection is insecure</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq6-li><input type=checkbox id=m-endocs3-v2java-sdkfaq6-check> |
| <label for=m-endocs3-v2java-sdkfaq6-check><a href=/en/docs3-v2/java-sdk/faq/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq6><span>6 - Transport</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq61-li><input type=checkbox id=m-endocs3-v2java-sdkfaq61-check> |
| <label for=m-endocs3-v2java-sdkfaq61-check><a href=/en/docs3-v2/java-sdk/faq/6/1/ title="6-1 - Server Connection Failed" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq61><span>6-1 - Server connection failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq62-li><input type=checkbox id=m-endocs3-v2java-sdkfaq62-check> |
| <label for=m-endocs3-v2java-sdkfaq62-check><a href=/en/docs3-v2/java-sdk/faq/6/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq62><span>6-2 - Client Timeout</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq63-li><input type=checkbox id=m-endocs3-v2java-sdkfaq63-check> |
| <label for=m-endocs3-v2java-sdkfaq63-check><a href=/en/docs3-v2/java-sdk/faq/6/3/ title="6-3 - Failed to close network connection" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq63><span>6-3 - Failed to close the network connection</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq64-li><input type=checkbox id=m-endocs3-v2java-sdkfaq64-check> |
| <label for=m-endocs3-v2java-sdkfaq64-check><a href=/en/docs3-v2/java-sdk/faq/6/4/ title="6-4 - Network communication layer unknown exception" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq64><span>6-4 - Unknown exception in the network communication layer</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq65-li><input type=checkbox id=m-endocs3-v2java-sdkfaq65-check> |
| <label for=m-endocs3-v2java-sdkfaq65-check><a href=/en/docs3-v2/java-sdk/faq/6/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq65><span>6-5 - Network disconnection failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq66-li><input type=checkbox id=m-endocs3-v2java-sdkfaq66-check> |
| <label for=m-endocs3-v2java-sdkfaq66-check><a href=/en/docs3-v2/java-sdk/faq/6/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq66><span>6-6 - Unsupported message</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq67-li><input type=checkbox id=m-endocs3-v2java-sdkfaq67-check> |
| <label for=m-endocs3-v2java-sdkfaq67-check><a href=/en/docs3-v2/java-sdk/faq/6/7/ title="6-7 - Thread Connection Exceeded Warning" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq67><span>6-7 - Server connection failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq68-li><input type=checkbox id=m-endocs3-v2java-sdkfaq68-check> |
| <label for=m-endocs3-v2java-sdkfaq68-check><a href=/en/docs3-v2/java-sdk/faq/6/8/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq68><span>6-8 - Return data decoding failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq69-li><input type=checkbox id=m-endocs3-v2java-sdkfaq69-check> |
| <label for=m-endocs3-v2java-sdkfaq69-check><a href=/en/docs3-v2/java-sdk/faq/6/9/ title="6-9 - There are duplicate serial number IDs" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq69><span>6-9 - Server connection failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq610-li><input type=checkbox id=m-endocs3-v2java-sdkfaq610-check> |
| <label for=m-endocs3-v2java-sdkfaq610-check><a href=/en/docs3-v2/java-sdk/faq/6/10/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq610><span>6-10 - Payload Limit Exceeded Exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq611-li><input type=checkbox id=m-endocs3-v2java-sdkfaq611-check> |
| <label for=m-endocs3-v2java-sdkfaq611-check><a href=/en/docs3-v2/java-sdk/faq/6/11/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq611><span>6-11 - Character set not supported</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq612-li><input type=checkbox id=m-endocs3-v2java-sdkfaq612-check> |
| <label for=m-endocs3-v2java-sdkfaq612-check><a href=/en/docs3-v2/java-sdk/faq/6/12/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq612><span>6-12 - An error occurred when the ZK client was destroyed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq613-li><input type=checkbox id=m-endocs3-v2java-sdkfaq613-check> |
| <label for=m-endocs3-v2java-sdkfaq613-check><a href=/en/docs3-v2/java-sdk/faq/6/13/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq613><span>6-13 - Stream closed exception</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq614-li><input type=checkbox id=m-endocs3-v2java-sdkfaq614-check> |
| <label for=m-endocs3-v2java-sdkfaq614-check><a href=/en/docs3-v2/java-sdk/faq/6/14/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq614><span>6-14 - Server response failed</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq615-li><input type=checkbox id=m-endocs3-v2java-sdkfaq615-check> |
| <label for=m-endocs3-v2java-sdkfaq615-check><a href=/en/docs3-v2/java-sdk/faq/6/15/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq615><span>6-15 - Skip unread stream data</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq616-li><input type=checkbox id=m-endocs3-v2java-sdkfaq616-check> |
| <label for=m-endocs3-v2java-sdkfaq616-check><a href=/en/docs3-v2/java-sdk/faq/6/16/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq616><span>6-16 - An exception occurred during reconnection</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq7-li><input type=checkbox id=m-endocs3-v2java-sdkfaq7-check> |
| <label for=m-endocs3-v2java-sdkfaq7-check><a href=/en/docs3-v2/java-sdk/faq/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq7><span>7 - QoS</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq71-li><input type=checkbox id=m-endocs3-v2java-sdkfaq71-check> |
| <label for=m-endocs3-v2java-sdkfaq71-check><a href=/en/docs3-v2/java-sdk/faq/7/1/ title="7-1 - QOS OFF" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq71><span>7-1 - QOS is off</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq72-li><input type=checkbox id=m-endocs3-v2java-sdkfaq72-check> |
| <label for=m-endocs3-v2java-sdkfaq72-check><a href=/en/docs3-v2/java-sdk/faq/7/2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq72><span>7-2 - QOS is on</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq73-li><input type=checkbox id=m-endocs3-v2java-sdkfaq73-check> |
| <label for=m-endocs3-v2java-sdkfaq73-check><a href=/en/docs3-v2/java-sdk/faq/7/3/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq73><span>7-3 - Set warning percentage value for timeout</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq74-li><input type=checkbox id=m-endocs3-v2java-sdkfaq74-check> |
| <label for=m-endocs3-v2java-sdkfaq74-check><a href=/en/docs3-v2/java-sdk/faq/7/4/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq74><span>7-4 - QOS service failed to start</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq75-li><input type=checkbox id=m-endocs3-v2java-sdkfaq75-check> |
| <label for=m-endocs3-v2java-sdkfaq75-check><a href=/en/docs3-v2/java-sdk/faq/7/5/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq75><span>7-5 - QOS command not found</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq76-li><input type=checkbox id=m-endocs3-v2java-sdkfaq76-check> |
| <label for=m-endocs3-v2java-sdkfaq76-check><a href=/en/docs3-v2/java-sdk/faq/7/6/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq76><span>7-6 - Unknown exception occurred in QOS</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq77-li><input type=checkbox id=m-endocs3-v2java-sdkfaq77-check> |
| <label for=m-endocs3-v2java-sdkfaq77-check><a href=/en/docs3-v2/java-sdk/faq/7/7/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq77><span>7-7 - QOS Unprivileged Access</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2java-sdkfaq99-li><input type=checkbox id=m-endocs3-v2java-sdkfaq99-check> |
| <label for=m-endocs3-v2java-sdkfaq99-check><a href=/en/docs3-v2/java-sdk/faq/99/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2java-sdkfaq99><span>99 - Unknown</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq991-li><input type=checkbox id=m-endocs3-v2java-sdkfaq991-check> |
| <label for=m-endocs3-v2java-sdkfaq991-check><a href=/en/docs3-v2/java-sdk/faq/99/1/ title="99-1 - Program Interrupted" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq991><span>99-1 - Program interrupted</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaq990-li><input type=checkbox id=m-endocs3-v2java-sdkfaq990-check> |
| <label for=m-endocs3-v2java-sdkfaq990-check><a href=/en/docs3-v2/java-sdk/faq/99/0/ title="99-0 - Internal Unknown Error" class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaq990><span>99-0 - Internal unknown error</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2java-sdkfaqintro-li><input type=checkbox id=m-endocs3-v2java-sdkfaqintro-check> |
| <label for=m-endocs3-v2java-sdkfaqintro-check><a href=/en/docs3-v2/java-sdk/faq/intro/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2java-sdkfaqintro><span>Introduction to Error Code Mechanism</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdk-li><input type=checkbox id=m-endocs3-v2golang-sdk-check> |
| <label for=m-endocs3-v2golang-sdk-check><a href=/en/docs3-v2/golang-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdk><span>Golang</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdkpreface-li><input type=checkbox id=m-endocs3-v2golang-sdkpreface-check> |
| <label for=m-endocs3-v2golang-sdkpreface-check><a href=/en/docs3-v2/golang-sdk/preface/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdkpreface><span>Preface</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefacewhat-li><input type=checkbox id=m-endocs3-v2golang-sdkprefacewhat-check> |
| <label for=m-endocs3-v2golang-sdkprefacewhat-check><a href=/en/docs3-v2/golang-sdk/preface/what/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefacewhat><span>What is Dubbo-go</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdkprefaceconcept-li><input type=checkbox id=m-endocs3-v2golang-sdkprefaceconcept-check> |
| <label for=m-endocs3-v2golang-sdkprefaceconcept-check><a href=/en/docs3-v2/golang-sdk/preface/concept/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdkprefaceconcept><span>Concept</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefaceconceptgeneric-li><input type=checkbox id=m-endocs3-v2golang-sdkprefaceconceptgeneric-check> |
| <label for=m-endocs3-v2golang-sdkprefaceconceptgeneric-check><a href=/en/docs3-v2/golang-sdk/preface/concept/generic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefaceconceptgeneric><span>generalization call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefaceconceptmulti_language-li><input type=checkbox id=m-endocs3-v2golang-sdkprefaceconceptmulti_language-check> |
| <label for=m-endocs3-v2golang-sdkprefaceconceptmulti_language-check><a href=/en/docs3-v2/golang-sdk/preface/concept/multi_language/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefaceconceptmulti_language><span>Multilingual RPC</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefaceconceptprotocol-li><input type=checkbox id=m-endocs3-v2golang-sdkprefaceconceptprotocol-check> |
| <label for=m-endocs3-v2golang-sdkprefaceconceptprotocol-check><a href=/en/docs3-v2/golang-sdk/preface/concept/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefaceconceptprotocol><span>Network Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefaceconceptregistry-li><input type=checkbox id=m-endocs3-v2golang-sdkprefaceconceptregistry-check> |
| <label for=m-endocs3-v2golang-sdkprefaceconceptregistry-check><a href=/en/docs3-v2/golang-sdk/preface/concept/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefaceconceptregistry><span>Service Registration Discovery</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkpreface30_feature-li><input type=checkbox id=m-endocs3-v2golang-sdkpreface30_feature-check> |
| <label for=m-endocs3-v2golang-sdkpreface30_feature-check><a href=/en/docs3-v2/golang-sdk/preface/3.0_feature/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkpreface30_feature><span>New Features of Dubbo-go 3.0</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdkprefacedesign-li><input type=checkbox id=m-endocs3-v2golang-sdkprefacedesign-check> |
| <label for=m-endocs3-v2golang-sdkprefacedesign-check><a href=/en/docs3-v2/golang-sdk/preface/design/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdkprefacedesign><span>Architecture</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefacedesignaop_and_extension-li><input type=checkbox id=m-endocs3-v2golang-sdkprefacedesignaop_and_extension-check> |
| <label for=m-endocs3-v2golang-sdkprefacedesignaop_and_extension-check><a href=/en/docs3-v2/golang-sdk/preface/design/aop_and_extension/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefacedesignaop_and_extension><span>AOP and Extensibility Mechanisms</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefacedesignarchitecture-li><input type=checkbox id=m-endocs3-v2golang-sdkprefacedesignarchitecture-check> |
| <label for=m-endocs3-v2golang-sdkprefacedesignarchitecture-check><a href=/en/docs3-v2/golang-sdk/preface/design/architecture/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefacedesignarchitecture><span>Architecture</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefacedesignapp_and_interface-li><input type=checkbox id=m-endocs3-v2golang-sdkprefacedesignapp_and_interface-check> |
| <label for=m-endocs3-v2golang-sdkprefacedesignapp_and_interface-check><a href=/en/docs3-v2/golang-sdk/preface/design/app_and_interface/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefacedesignapp_and_interface><span>Dubbo's application and interface</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkprefacesamples-li><input type=checkbox id=m-endocs3-v2golang-sdkprefacesamples-check> |
| <label for=m-endocs3-v2golang-sdkprefacesamples-check><a href=/en/docs3-v2/golang-sdk/preface/samples/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkprefacesamples><span>Dubbo-go Samples</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdkquickstart-li><input type=checkbox id=m-endocs3-v2golang-sdkquickstart-check> |
| <label for=m-endocs3-v2golang-sdkquickstart-check><a href=/en/docs3-v2/golang-sdk/quickstart/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdkquickstart><span>Quick Start</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkquickstartinstall-li><input type=checkbox id=m-endocs3-v2golang-sdkquickstartinstall-check> |
| <label for=m-endocs3-v2golang-sdkquickstartinstall-check><a href=/en/docs3-v2/golang-sdk/quickstart/install/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkquickstartinstall><span>Install Dubbo-go development environment</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkquickstartquickstart_triple-li><input type=checkbox id=m-endocs3-v2golang-sdkquickstartquickstart_triple-check> |
| <label for=m-endocs3-v2golang-sdkquickstartquickstart_triple-check><a href=/en/docs3-v2/golang-sdk/quickstart/quickstart_triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkquickstartquickstart_triple><span>Complete an RPC call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkquickstartquickstart_triple_with_customize-li><input type=checkbox id=m-endocs3-v2golang-sdkquickstartquickstart_triple_with_customize-check> |
| <label for=m-endocs3-v2golang-sdkquickstartquickstart_triple_with_customize-check><a href=/en/docs3-v2/golang-sdk/quickstart/quickstart_triple_with_customize/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkquickstartquickstart_triple_with_customize><span>Complete an RPC call (the version that defines the interface yourself)</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorial-li><input type=checkbox id=m-endocs3-v2golang-sdktutorial-check> |
| <label for=m-endocs3-v2golang-sdktutorial-check><a href=/en/docs3-v2/golang-sdk/tutorial/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorial><span>Task</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdevelop-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelop-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelop-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdevelop><span>Develop Services</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdeveloptemplate-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdeveloptemplate-check> |
| <label for=m-endocs3-v2golang-sdktutorialdeveloptemplate-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/template/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdeveloptemplate><span>Apply Template</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdevelopregistry-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistry-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistry-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdevelopregistry><span>Registry</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistrydesc-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistrydesc-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistrydesc-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/desc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistrydesc><span>Understanding the Registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistryservice-discovery-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistryservice-discovery-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistryservice-discovery-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/service-discovery/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistryservice-discovery><span>Application-Level Service Discovery</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistryregistry-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistryregistry-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistryregistry-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistryregistry><span>Registry Configuration</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/nacos/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistrynacos><span>Use Nacos as a registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-2-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-2-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-2-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/nacos-2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistrynacos-2><span>使用 Nacos 作为注册中心</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistryzookeeper-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistryzookeeper-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistryzookeeper-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/zookeeper/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistryzookeeper><span>Using Zookeeper as a Registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistrypolaris-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistrypolaris-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistrypolaris-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/polaris/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistrypolaris><span>Using Polaris as a Registry</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopregistrymulti_registry-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopregistrymulti_registry-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopregistrymulti_registry-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/registry/multi_registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopregistrymulti_registry><span>Multiple Registries</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdevelopprotocol-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopprotocol-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopprotocol-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdevelopprotocol><span>Protocol Configuration</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopprotocolexception_response-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopprotocolexception_response-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopprotocolexception_response-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/protocol/exception_response/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopprotocolexception_response><span>Triple exception return</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopprotocolerror-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopprotocolerror-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopprotocolerror-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/protocol/error/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopprotocolerror><span>exception information return</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopprotocolchoose_protocol-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopprotocolchoose_protocol-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopprotocolchoose_protocol-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/protocol/choose_protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopprotocolchoose_protocol><span>Select the network protocol to use</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdevelopinterflow-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopinterflow-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopinterflow-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/interflow/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdevelopinterflow><span>Heterogeneous System Interoperability</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_java-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_java-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_java-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/interflow/call_java/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_java><span>Cross-language interoperability with Java applications</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_grpc-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_grpc-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_grpc-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/interflow/call_grpc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopinterflowcall_grpc><span>Interoperate with gRPC applications</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdevelopconfig-center-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopconfig-center-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopconfig-center-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/config-center/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdevelopconfig-center><span>Configuration Center</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerdesc-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerdesc-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopconfig-centerdesc-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/config-center/desc/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerdesc><span>Introduction to Configuration Center</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerconfig-center-dynamic-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerconfig-center-dynamic-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopconfig-centerconfig-center-dynamic-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/config-center/config-center-dynamic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerconfig-center-dynamic><span>Dubbogo 3.0 configuration center and configuration monitoring</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerremote_config-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerremote_config-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopconfig-centerremote_config-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/config-center/remote_config/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopconfig-centerremote_config><span>Remote loading configuration start</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdevelopfeatures-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopfeatures-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopfeatures-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/features/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdevelopfeatures><span>Advanced Features</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopfeaturesconfig_api-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopfeaturesconfig_api-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopfeaturesconfig_api-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/features/config_api/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopfeaturesconfig_api><span>Launching the Application Using the Configuration API</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopfeaturescustom-logger-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopfeaturescustom-logger-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopfeaturescustom-logger-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/features/custom-logger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopfeaturescustom-logger><span>log</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopfeaturescontext-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopfeaturescontext-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopfeaturescontext-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/features/context/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopfeaturescontext><span>Use ctx to pass context information</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/features/generic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric><span>generalization call</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-2-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-2-check> |
| <label for=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-2-check><a href=/en/docs3-v2/golang-sdk/tutorial/develop/features/generic-2/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdevelopfeaturesgeneric-2><span>generalization call</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdebugging-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdebugging-check> |
| <label for=m-endocs3-v2golang-sdktutorialdebugging-check><a href=/en/docs3-v2/golang-sdk/tutorial/debugging/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdebugging><span>Service Debugging</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdebugginggrpc_cli-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdebugginggrpc_cli-check> |
| <label for=m-endocs3-v2golang-sdktutorialdebugginggrpc_cli-check><a href=/en/docs3-v2/golang-sdk/tutorial/debugging/grpc_cli/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialdebugginggrpc_cli><span>Use grpc_cli to debug Dubbo-go service</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialdeployment-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdeployment-check> |
| <label for=m-endocs3-v2golang-sdktutorialdeployment-check><a href=/en/docs3-v2/golang-sdk/tutorial/deployment/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdeployment><span>Deployment Service</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdeploymentpractice-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdeploymentpractice-check> |
| <label for=m-endocs3-v2golang-sdktutorialdeploymentpractice-check><a href=/en/docs3-v2/golang-sdk/tutorial/deployment/practice/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdeploymentpractice><span>Introduction to Best Practices for Production Deployment</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdeploymentdocker-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdeploymentdocker-check> |
| <label for=m-endocs3-v2golang-sdktutorialdeploymentdocker-check><a href=/en/docs3-v2/golang-sdk/tutorial/deployment/docker/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdeploymentdocker><span>Docker image packaging tutorial</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialdeploymentkubernetes-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialdeploymentkubernetes-check> |
| <label for=m-endocs3-v2golang-sdktutorialdeploymentkubernetes-check><a href=/en/docs3-v2/golang-sdk/tutorial/deployment/kubernetes/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialdeploymentkubernetes><span>Kubernetes Deployment Tutorial</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernance-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernance-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernance-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernance><span>Service Governance</span></a></label><ul class="ul-4 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitor-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitor-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitor-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancemonitor><span>Service Status Monitoring</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitorhttp-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitorhttp-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitorhttp-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/http/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancemonitorhttp><span>Indicator observation based on http metrics</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitorrpc_metrics-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitorrpc_metrics-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitorrpc_metrics-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/rpc_metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancemonitorrpc_metrics><span>View monitoring information of RPC calls</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitorpromethus-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitorpromethus-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitorpromethus-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/promethus/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancemonitorpromethus><span>Data Reporting Promethus Tutorial</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitorgrafana-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitorgrafana-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitorgrafana-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/grafana/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancemonitorgrafana><span>Grafana-based Visual Monitoring Tutorial</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitorlogger-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitorlogger-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitorlogger-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/logger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancemonitorlogger><span>Dubbo Go Log Management</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancemonitormetrics-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancemonitormetrics-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancemonitormetrics-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/monitor/metrics/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancemonitormetrics><span>Metrics data reporting</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernancetracing-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetracing-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetracing-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/tracing/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancetracing><span>Full Link Tracking</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancetracingjaeger-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetracingjaeger-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetracingjaeger-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/tracing/jaeger/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancetracingjaeger><span>Link Tracking Based on Jaeger</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancetracingopentelmentry-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetracingopentelmentry-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetracingopentelmentry-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/tracing/opentelmentry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancetracingopentelmentry><span>Using the OpenTelmentry Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancetracingskywalking-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetracingskywalking-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetracingskywalking-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/tracing/skywalking/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancetracingskywalking><span>Skywalking-based Tracking</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernancehealth-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancehealth-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancehealth-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/health/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancehealth><span>Health Check</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancehealthtriple-health-check-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancehealthtriple-health-check-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancehealthtriple-health-check-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/health/triple-health-check/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancehealthtriple-health-check><span>Grpc-based health check</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancehealthstart-check-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancehealthstart-check-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancehealthstart-check-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/health/start-check/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancehealthstart-check><span>dubbogo 3.0 check at startup</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancehealthkubernetes-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancehealthkubernetes-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancehealthkubernetes-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/health/kubernetes/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancehealthkubernetes><span>Kubernetes Probe</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernancetraffic-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetraffic-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetraffic-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/traffic/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancetraffic><span>Traffic Management</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancetrafficmesh_router-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetrafficmesh_router-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetrafficmesh_router-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/traffic/mesh_router/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancetrafficmesh_router><span>routing rules</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancetrafficgraceful_shutdown-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancetrafficgraceful_shutdown-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancetrafficgraceful_shutdown-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/traffic/graceful_shutdown/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancetrafficgraceful_shutdown><span>Elegant online and offline</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernancelimit-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancelimit-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancelimit-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/limit/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancelimit><span>Rate Limit</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancelimitinternally-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancelimitinternally-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancelimitinternally-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/limit/internally/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancelimitinternally><span>Dubbo Go's built-in current limit usage tutorial</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancelimitsentinel-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancelimitsentinel-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancelimitsentinel-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/limit/sentinel/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancelimitsentinel><span>Current Limiting Tutorial Based on Sentinel</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancelimitpolaris-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancelimitpolaris-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancelimitpolaris-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/limit/polaris/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancelimitpolaris><span>Polaris-Based Current Limiting Tutorial</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancelimittps_limiter-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancelimittps_limiter-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancelimittps_limiter-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/limit/tps_limiter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancelimittps_limiter><span>Set current limit for the server</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancelimitadaptive-service-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancelimitadaptive-service-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancelimitadaptive-service-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/limit/adaptive-service/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancelimitadaptive-service><span>dubbogo 3.0 flexible service</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-mesh-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-mesh-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-mesh-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernanceservice-mesh><span>Service Mesh</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshistio-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshistio-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshistio-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/istio/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshistio><span>Deploy the Istio environment</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshdeploy-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshdeploy-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshdeploy-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/deploy/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshdeploy><span>Deploy Dubbo-go application in Istio environment</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshtraffic_management-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshtraffic_management-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshtraffic_management-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/traffic_management/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshtraffic_management><span>traffic management</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiu-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiu-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiu-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/pixiu/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiu><span>Use Pixiu gateway to access Ingress traffic</span></a></label><ul class="ul-6 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiuhttp_triple-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiuhttp_triple-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiuhttp_triple-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/pixiu/http_triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiuhttp_triple><span>Access Ingress Traffic</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiupixiu-nacos-triple-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiupixiu-nacos-triple-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiupixiu-nacos-triple-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/pixiu/pixiu-nacos-triple/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshpixiupixiu-nacos-triple><span>Use Pixiu to expose Dubbo-go service</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshproxyless_service_mesh-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshproxyless_service_mesh-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernanceservice-meshproxyless_service_mesh-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/service-mesh/proxyless_service_mesh/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernanceservice-meshproxyless_service_mesh><span>Proxyless Service Mesh</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdktutorialgovernancefeatures-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancefeatures-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancefeatures-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/features/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdktutorialgovernancefeatures><span>Advanced Features</span></a></label><ul class="ul-5 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancefeaturesaop-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancefeaturesaop-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancefeaturesaop-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/features/aop/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancefeaturesaop><span>Custom service call middleware</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancefeaturestimeout-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancefeaturestimeout-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancefeaturestimeout-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/features/timeout/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancefeaturestimeout><span>timeout for configuration calls</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdktutorialgovernancefeaturescustom-filter-li><input type=checkbox id=m-endocs3-v2golang-sdktutorialgovernancefeaturescustom-filter-check> |
| <label for=m-endocs3-v2golang-sdktutorialgovernancefeaturescustom-filter-check><a href=/en/docs3-v2/golang-sdk/tutorial/governance/features/custom-filter/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdktutorialgovernancefeaturescustom-filter><span>Custom Filter component</span></a></label></li></ul></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdksourcecode-li><input type=checkbox id=m-endocs3-v2golang-sdksourcecode-check> |
| <label for=m-endocs3-v2golang-sdksourcecode-check><a href=/en/docs3-v2/golang-sdk/sourcecode/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdksourcecode><span>Source Code Interpretation</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdksourcecodeprotocol-li><input type=checkbox id=m-endocs3-v2golang-sdksourcecodeprotocol-check> |
| <label for=m-endocs3-v2golang-sdksourcecodeprotocol-check><a href=/en/docs3-v2/golang-sdk/sourcecode/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdksourcecodeprotocol><span>Network Protocol</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdksourcecoderegistry-li><input type=checkbox id=m-endocs3-v2golang-sdksourcecoderegistry-check> |
| <label for=m-endocs3-v2golang-sdksourcecoderegistry-check><a href=/en/docs3-v2/golang-sdk/sourcecode/registry/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdksourcecoderegistry><span>注册中心</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2golang-sdkrefer-li><input type=checkbox id=m-endocs3-v2golang-sdkrefer-check> |
| <label for=m-endocs3-v2golang-sdkrefer-check><a href=/en/docs3-v2/golang-sdk/refer/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2golang-sdkrefer><span>Reference</span></a></label><ul class="ul-3 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkreferconfig-li><input type=checkbox id=m-endocs3-v2golang-sdkreferconfig-check> |
| <label for=m-endocs3-v2golang-sdkreferconfig-check><a href=/en/docs3-v2/golang-sdk/refer/config/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkreferconfig><span>configuration item reference</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkreferuse_dubbogo_cli-li><input type=checkbox id=m-endocs3-v2golang-sdkreferuse_dubbogo_cli-check> |
| <label for=m-endocs3-v2golang-sdkreferuse_dubbogo_cli-check><a href=/en/docs3-v2/golang-sdk/refer/use_dubbogo_cli/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkreferuse_dubbogo_cli><span>Use dubbogo-cli tool</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkreferecology-li><input type=checkbox id=m-endocs3-v2golang-sdkreferecology-check> |
| <label for=m-endocs3-v2golang-sdkreferecology-check><a href=/en/docs3-v2/golang-sdk/refer/ecology/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkreferecology><span>Dubbogo Ecological Components</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkrefercompatible_version-li><input type=checkbox id=m-endocs3-v2golang-sdkrefercompatible_version-check> |
| <label for=m-endocs3-v2golang-sdkrefercompatible_version-check><a href=/en/docs3-v2/golang-sdk/refer/compatible_version/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkrefercompatible_version><span>Depends on the adaptation version number</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2golang-sdkreferbasic_concept-li><input type=checkbox id=m-endocs3-v2golang-sdkreferbasic_concept-check> |
| <label for=m-endocs3-v2golang-sdkreferbasic_concept-check><a href=/en/docs3-v2/golang-sdk/refer/basic_concept/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2golang-sdkreferbasic_concept><span>Basic concepts of configuration</span></a></label></li></ul></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section with-child" id=m-endocs3-v2rust-sdk-li><input type=checkbox id=m-endocs3-v2rust-sdk-check> |
| <label for=m-endocs3-v2rust-sdk-check><a href=/en/docs3-v2/rust-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2rust-sdk><span>Rust</span></a></label><ul class="ul-2 foldable"><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2rust-sdkquick-start-li><input type=checkbox id=m-endocs3-v2rust-sdkquick-start-check> |
| <label for=m-endocs3-v2rust-sdkquick-start-check><a href=/en/docs3-v2/rust-sdk/quick-start/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2rust-sdkquick-start><span>Quick start</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2rust-sdkjava-interoperability-li><input type=checkbox id=m-endocs3-v2rust-sdkjava-interoperability-check> |
| <label for=m-endocs3-v2rust-sdkjava-interoperability-check><a href=/en/docs3-v2/rust-sdk/java-interoperability/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2rust-sdkjava-interoperability><span>Rust and Java interoperability</span></a></label></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2rust-sdkprotocol-li><input type=checkbox id=m-endocs3-v2rust-sdkprotocol-check> |
| <label for=m-endocs3-v2rust-sdkprotocol-check><a href=/en/docs3-v2/rust-sdk/protocol/ class="align-left pl-0 td-sidebar-link td-sidebar-link__page" id=m-endocs3-v2rust-sdkprotocol><span>Network Protocol</span></a></label></li></ul></li><li class="td-sidebar-nav__section-title td-sidebar-nav__section without-child" id=m-endocs3-v2erlang-sdk-li><input type=checkbox id=m-endocs3-v2erlang-sdk-check> |
| <label for=m-endocs3-v2erlang-sdk-check><a href=/en/docs3-v2/erlang-sdk/ class="align-left pl-0 td-sidebar-link td-sidebar-link__section" id=m-endocs3-v2erlang-sdk><span>Erlang</span></a></label></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/en/docs3-v2/>SDK Manual</a></li><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/docs3-v2/java-sdk/>Java</a></li><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/docs3-v2/java-sdk/reference-manual/>Reference Manual</a></li><li class=breadcrumb-item><a href=https://dubbo.apache.org/en/docs3-v2/java-sdk/reference-manual/protocol/>RPC Protocol</a></li><li class="breadcrumb-item active" aria-current=page><a href=https://dubbo.apache.org/en/docs3-v2/java-sdk/reference-manual/protocol/rest/ aria-disabled=true class="btn-link disabled">Rest protocol</a></li></ol></nav><div class=td-content><h1>Rest protocol</h1><header class=article-meta></header><p>Support for REST calls based on the standard Java REST API - JAX-RS 2.0 (short for Java API for RESTful Web Services)</p><h3 id=quick-start>Quick Start</h3><p>It is relatively simple to develop a REST-style service in dubbo. Let’s take a simple service for registered users as an example.</p><p>The function of this service is to provide the following URL (note: this URL is not fully in line with REST style, but it is simpler and more practical)</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:8080/users/register |
| </span></span></code></pre></div><p>And any client can POST a JSON string containing user information to the above URL to complete user registration.</p><p>First, develop the interface of the service</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> |
| </span></span></code></pre></div><p>Then, develop the implementation of the service</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>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"users"</span><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>UserServiceImpl</span> <span style=color:#268bd2>implements</span> UserService <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@POST</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"register"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Consumes</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</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 style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// save the user... |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span> <span style=color:#719e07>}</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>The above implementation is very simple, but since the REST service is to be published to a specified URL for access by clients of any language or even browsers, several standard annotations of JAX-RS are added here for related configuration.</p><p>@Path(“users”): Specifies that the relative path of the URL to access UserService is /users, ie http://localhost:8080/users</p><p>@Path(“register”): Specifies that the relative path of the URL to access the registerUser() method is /register, combined with the path specified by the previous @Path for UserService, the full path to call UserService.register() is http://localhost :8080/users/register</p><p>@POST: Specifies to access registerUser() with the HTTP POST method</p><p>@Consumes({MediaType.APPLICATION_JSON}): Specifies that registerUser() receives data in JSON format. The REST framework will automatically deserialize the JSON data into a User object</p><p>Finally, add this service in the spring configuration file to complete all service development work</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:#586e75><!-- Expose the service on port 8080 using the rest protocol --></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8080"</span><span style=color:#268bd2>/></span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span><span style=color:#586e75><!-- Declare the service interface that needs to be exposed --></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2><dubbo:service</span> interface=<span style=color:#2aa198>"xxx.UserService"</span> ref=<span style=color:#2aa198>"userService"</span><span style=color:#268bd2>/></span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span><span style=color:#586e75><!-- Implement services like local beans --></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2><bean</span> id=<span style=color:#2aa198>"userService"</span> class=<span style=color:#2aa198>"xxx.UserServiceImpl"</span> <span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><h3 id=detailed-explanation-of-rest-service-provider>Detailed explanation of REST service provider</h3><p>Next, we expand the UserService in the “Quick Start” to further demonstrate the development points of the REST service provider in dubbo.</p><h3 id=implementation-of-http-postget>Implementation of HTTP POST/GET</h3><p>In the REST service, although it is recommended to use the four standard methods POST, DELETE, PUT, and GET in the HTTP protocol to implement common “addition, deletion, modification and query” respectively, in practice, we generally use POST directly to implement “addition and modification”, and GET to implement Just implement “delete check” (DELETE and PUT will even be blocked by some firewalls).</p><p>The implementation of POST has been briefly demonstrated before. Here, we add a function of obtaining registered user information to UserService to demonstrate the implementation of GET.</p><p>This function is to enable the client to obtain user profiles with different IDs by accessing the following URLs</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:8080/users/1001 |
| </span></span><span style=display:flex><span>http://localhost:8080/users/1002 |
| </span></span><span style=display:flex><span>http://localhost:8080/users/1003 |
| </span></span></code></pre></div><p>Of course, user profiles with different IDs can also be accessed through other forms of URLs, for example</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:8080/users/load?id=1001 |
| </span></span></code></pre></div><p>JAX-RS natively supports all of these forms. But the above form of including query parameters in the URL path (http://localhost:8080/users/1001) is more in line with the general habits of REST, so it is recommended for everyone to use. Next, we will add a getUser() method to UserService to achieve this form of URL access</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>@GET</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"{id : \\d+}"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Produces</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>//... |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>@GET: Specifies to use the HTTP GET method to access</p><p>@Path("{id : \d+}"): According to the functional requirements above, the URL to access getUser() should be “http://localhost:8080/users/ + any number”, and this number should be made Pass the getUser() method as a parameter. In the annotation configuration here, {id: xxx} in the middle of @Path specifies that the URL relative path contains a parameter named id, and its value will be automatically passed to the method parameter modified with @PathParam(“id”) below id. {id: followed by \d+ is a regular expression, specifying that the id parameter must be a number.</p><p>@Produces({MediaType.APPLICATION_JSON}): Specify getUser() to output data in JSON format. The framework will automatically serialize the User object into JSON data.</p><h3 id=annotation-is-placed-in-the-interface-class-or-the-implementation-class>Annotation is placed in the interface class or the implementation class</h3><p>The development of REST services in Dubbo is mainly configured through JAX-RS annotations. In the above examples, we put the annotations in the service implementation class. But in fact, we can also put the annotation on the interface of the service. The two methods are completely equivalent, for example:</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>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"users"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>interface</span> <span style=color:#268bd2>UserService</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@GET</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"{id : \\d+}"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Produces</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span> User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>);</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>In general applications, we recommend placing the annotation in the service implementation class, so that the location of the annotation and the java implementation code are closer, making it easier to develop and maintain. In addition, more importantly, we generally tend to avoid pollution of the interface, and maintain the purity and wide applicability of the interface.</p><p>However, as mentioned later, if we want to use the consumer directly developed by dubbo to access this service, the annotation must be placed on the interface.</p><p>If annotations are added to both the interface and the implementation class, the annotation configuration of the implementation class will take effect, and the annotation on the interface will be ignored directly.</p><h3 id=support-for-multiple-data-formats-such-as-json-and-xml>Support for multiple data formats such as JSON and XML</h3><p>The REST service developed in dubbo can support the transmission of data in multiple formats at the same time to provide clients with maximum flexibility. Among them we currently have added extra functionality especially for the most commonly used formats JSON and XML.</p><p>For example, if we want the getUser() method in the above example to support returning data in JSON and XML formats, we only need to include both formats in the annotation</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>@Produces</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>,</span> MediaType<span style=color:#719e07>.</span> TEXT_XML<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span>User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>);</span> |
| </span></span></code></pre></div><p>Or you can directly use strings (wildcards are also supported) to represent MediaType</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>@Produces</span><span style=color:#719e07>({</span><span style=color:#2aa198>"application/json"</span><span style=color:#719e07>,</span> <span style=color:#2aa198>"text/xml"</span><span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span>User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>);</span> |
| </span></span></code></pre></div><p>If all methods support the same type of input and output data format, we don’t need to configure each method, just add annotation to the service class</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>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"users"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Consumes</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>,</span> MediaType<span style=color:#719e07>.</span> TEXT_XML<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Produces</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>,</span> MediaType<span style=color:#719e07>.</span> TEXT_XML<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>UserServiceImpl</span> <span style=color:#268bd2>implements</span> UserService <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>//... |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>In the case that a REST service supports multiple data formats at the same time, according to the JAX-RS standard, the MIME header (content-type and accept) in HTTP is generally used to specify which format data is currently wanted.</p><p>But in dubbo, we also automatically support the method commonly used in the industry at present, that is, use a URL suffix (.json and .xml) to specify the desired data format. For example, after adding the above annotation, direct access to http://localhost:8888/users/1001.json means to use json format, and direct access to http://localhost:8888/users/1002.xml means to use xml format, Simpler and more intuitive than using HTTP Header. The REST APIs of Twitter, Weibo, etc. all use this method. |
| If you add neither HTTP header nor suffix, dubbo’s REST will give priority to the data format that ranks first in the above annotation definition.</p><blockquote><p>Note: To support XML format data here, you can use MediaType.TEXT_XML or MediaType.APPLICATION_XML in annotation, but TEXT_XML is more commonly used, and if you want to use the above URL suffix method to specify the data format, you can only use Only when it is configured as TEXT_XML can it take effect.</p></blockquote><h3 id=chinese-character-support>Chinese character support</h3><p>In order to output Chinese characters normally in dubbo REST, like usual Java web applications, we need to set the contentType of the HTTP response to UTF-8 encoding.</p><p>Based on the standard usage of JAX-RS, we only need to do the following annotation configuration:</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>@Produces</span><span style=color:#719e07>({</span><span style=color:#2aa198>"application/json; charset=UTF-8"</span><span style=color:#719e07>,</span> <span style=color:#2aa198>"text/xml; charset=UTF-8"</span><span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span>User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>);</span> |
| </span></span></code></pre></div><p>For the convenience of users, we directly added a support class in dubbo REST to define the above constants, which can be used directly to reduce the possibility of errors.</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>@Produces</span><span style=color:#719e07>({</span>ContentType<span style=color:#719e07>.</span> APPLICATION_JSON_UTF_8<span style=color:#719e07>,</span> ContentType<span style=color:#719e07>.</span> TEXT_XML_UTF_8<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span>User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>);</span> |
| </span></span></code></pre></div><h3 id=additional-requirements-for-xml-data-format>Additional requirements for XML data format</h3><p>Since the implementation of JAX-RS generally uses the standard JAXB (Java API for XML Binding) to serialize and deserialize XML format data, we need to add a class-level JAXB annotation for each object to be transmitted in XML, Otherwise serialization will report an error. For example, add the following to the User returned in getUser()</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>@XmlRootElement</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>User</span> <span style=color:#268bd2>implements</span> Serializable <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>//... |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>In addition, if the return values in the service method are Java primitive types (such as int, long, float, double, etc.), it is best to add a layer of wrapper objects for them, because JAXB cannot directly serialize primitive types.</p><p>For example, we want the aforementioned registerUser() method to return the ID number generated by the server for the user:</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:#dc322f>long</span> <span style=color:#268bd2>registerUser</span><span style=color:#719e07>(</span>User user<span style=color:#719e07>);</span> |
| </span></span></code></pre></div><p>Since primitive types are not supported by JAXB serialization, add a wrapper object:</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>@XmlRootElement</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>public</span> <span style=color:#268bd2>class</span> <span style=color:#268bd2>RegistrationResult</span> <span style=color:#268bd2>implements</span> Serializable <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> Long id<span style=color:#719e07>;</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>RegistrationResult</span><span style=color:#719e07>()</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></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#268bd2>RegistrationResult</span><span style=color:#719e07>(</span>Long id<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>this</span><span style=color:#719e07>.</span>id <span style=color:#719e07>=</span> id<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></span><span style=display:flex><span> <span style=color:#268bd2>public</span> Long <span style=color:#268bd2>getId</span><span style=color:#719e07>()</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> id<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></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>setId</span><span style=color:#719e07>(</span>Long id<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>this</span><span style=color:#719e07>.</span>id <span style=color:#719e07>=</span> id<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><p>And modify the service method:</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>RegistrationResult <span style=color:#268bd2>registerUser</span><span style=color:#719e07>(</span>User user<span style=color:#719e07>);</span> |
| </span></span></code></pre></div><p>This not only solves the problem of XML serialization, but also makes the returned data conform to the specifications of XML and JSON. For example, in JSON, the return would be of the form</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-javascript data-lang=javascript><span style=display:flex><span>{<span style=color:#2aa198>"id"</span><span style=color:#719e07>:</span> <span style=color:#2aa198>1001</span>} |
| </span></span></code></pre></div><p>If no wrapper is added, the JSON return value will be directly</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>1001 |
| </span></span></code></pre></div><p>In XML, the return value after adding wrapper will be:</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><registrationResult></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><id></span>1002<span style=color:#268bd2></id></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2></registrationResult></span> |
| </span></span></code></pre></div><p>This kind of wrapper object actually uses the so-called Data Transfer Object (DTO) pattern, and using DTO can also do more useful customizations for the transferred data.</p><h3 id=custom-serialization>Custom serialization</h3><p>As mentioned above, the underlying implementation of REST will automatically serialize/deserialize between service objects and JSON/XML data formats. However, in some scenarios, if you feel that this automatic conversion does not meet the requirements, you can customize it.</p><p>The REST implementation in Dubbo uses JAXB for XML serialization and Jackson for JSON serialization, so you can customize the mapping by adding JAXB or Jackson annotations to objects.</p><p>For example, custom object properties map to XML element names:</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>@XmlRootElement</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@XmlAccessorType</span><span style=color:#719e07>(</span>XmlAccessType<span style=color:#719e07>.</span>FIELD<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>User</span> <span style=color:#268bd2>implements</span> Serializable <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@XmlElement</span><span style=color:#719e07>(</span>name<span style=color:#719e07>=</span><span style=color:#2aa198>"username"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String name<span style=color:#719e07>;</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>Map custom object properties to JSON field names:</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>User</span> <span style=color:#268bd2>implements</span> Serializable <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@JsonProperty</span><span style=color:#719e07>(</span><span style=color:#2aa198>"username"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> String name<span style=color:#719e07>;</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>For more information, please refer to the official documentation of JAXB and Jackson, or google yourself.</p><h3 id=configure-the-implementation-of-rest-server>Configure the implementation of REST Server</h3><p>Currently in dubbo, we support the implementation of 5 embedded rest servers, and at the same time support the implementation of the rest server using an external application server. The rest server can be implemented through the following configuration:</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> server=<span style=color:#2aa198>"jetty"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>The above configuration uses the embedded jetty as the rest server. At the same time, if the server attribute is not configured, the rest protocol also uses jetty by default. jetty is a very mature java servlet container, and has been well integrated with dubbo (currently, among the five embedded servers, only jetty and tomcat and tjws described later have seamlessly integrated with dubbo monitoring system), Therefore, if your dubbo system is a separate startup process, you can directly use jetty by default.</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> server=<span style=color:#2aa198>"tomcat"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>The above configuration uses the embedded tomcat as the rest server. On the embedded tomcat, the performance of REST is much better than that on jetty (see the benchmark test later), it is recommended to use tomcat in the scenario that requires high performance.</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> server=<span style=color:#2aa198>"netty"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>The above configuration uses embedded netty as the rest server. (TODO more contents to add)</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> server=<span style=color:#2aa198>"tjws"</span><span style=color:#268bd2>/></span> (tjws is now deprecated) |
| </span></span><span style=display:flex><span><span style=color:#268bd2><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> server=<span style=color:#2aa198>"sunhttp"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>The above configuration uses the embedded tjws or Sun HTTP server as the rest server. These two server implementations are very lightweight, very convenient for quick start-up in integration tests, and of course they can also be used in production environments with low load. Note: tjws is currently deprecated because it doesn’t work well with the servlet 3.1 API.</p><p>If your dubbo system is not a separate startup process, but is deployed in a Java application server, it is recommended that you use the following configuration</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> server=<span style=color:#2aa198>"servlet"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>By setting the server as a servlet, dubbo will use the servlet container of the external application server as the rest server. At the same time, add the following configuration to the web.xml of the dubbo system</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><web-app></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><context-param></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><param-name></span>contextConfigLocation<span style=color:#268bd2></param-name></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><param-value></span>/WEB-INF/classes/META-INF/spring/dubbo-demo-provider.xml<span style=color:#268bd2></param-value></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2></context-param></span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><listener></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><listener-class></span>org.apache.dubbo.remoting.http.servlet.BootstrapListener<span style=color:#268bd2></listener-class></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2></listener></span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><listener></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><listener-class></span>org.springframework.web.context.ContextLoaderListener<span style=color:#268bd2></listener-class></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2></listener></span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><servlet></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><servlet-name></span>dispatcher<span style=color:#268bd2></servlet-name></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><servlet-class></span>org.apache.dubbo.remoting.http.servlet.DispatcherServlet<span style=color:#268bd2></servlet-class></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><load-on-startup></span>1<span style=color:#268bd2></load-on-startup></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2></servlet></span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><servlet-mapping></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><servlet-name></span>dispatcher<span style=color:#268bd2></servlet-name></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><url-pattern></span>/*<span style=color:#268bd2></url-pattern></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2></servlet-mapping></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2></web-app></span> |
| </span></span></code></pre></div><p>That is, dubbo’s BootstrapListener and DispatherServlet must be added to web.xml to complete the integration of dubbo’s REST function with the external servlet container.</p><blockquote><p>Note: If you use spring’s ContextLoaderListener to load spring, you must ensure that BootstrapListener is configured before ContextLoaderListener, otherwise dubbo initialization will fail.</p></blockquote><p>In fact, you can still use the embedded server in this scenario, but the servlet container of the external application server is often more powerful than the embedded server (especially if you are deploying to a more robust and scalable WebLogic, WebSphere, etc.), and Sometimes it is also convenient for unified management, monitoring, etc. on the application server.</p><h3 id=get-context-information>Get context information</h3><p>In the remote call, there may be many kinds of context information worth obtaining. Here, the client IP is taken as an example.</p><p>In dubbo’s REST, we have two ways to get client IP.</p><p>The first way, using JAX-RS standard @Context annotation</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> User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>,</span> <span style=color:#268bd2>@Context</span> HttpServletRequest request<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"Client address is "</span> <span style=color:#719e07>+</span> request<span style=color:#719e07>.</span>getRemoteAddr<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>After modifying a method parameter of getUser() with Context, you can inject the current HttpServletRequest into it, and then directly call the servlet api to obtain the IP.</p><blockquote><p>Note: This method can only work when the server is set to tjws, tomcat, jetty or servlet, because only these server implementations provide a servlet container. In addition, the standard JAX-RS also supports using @Context to modify an instance field of the service class to obtain HttpServletRequest, but we do not support this in dubbo.</p></blockquote><p>The second way, use RpcContext commonly used in dubbo</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> User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@PathParam</span><span style=color:#719e07>(</span><span style=color:#2aa198>"id"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"Client address is "</span> <span style=color:#719e07>+</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getRemoteAddressString<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><blockquote><p>Note: This method can only work when setting server=“jetty” or server=“tomcat” or server=“servlet” or server=“tjws”. In addition, currently dubbo’s RpcContext is a relatively intrusive usage, and we are likely to refactor it in the future.</p></blockquote><p>If you want to keep your project compatible with JAX-RS and run without dubbo in the future, please choose the first method. If you want a more elegant service interface definition, please choose the second way.</p><p>In addition, in the latest dubbo rest, it is also supported to obtain HttpServletRequest and HttpServletResponse through RpcContext to provide greater flexibility for users to implement some complex functions, such as accessing HTTP Header in dubbo standard filter. An example of usage is as follows</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>if</span> <span style=color:#719e07>(</span>RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getRequest<span style=color:#719e07>()</span> <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>&&</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getRequest<span style=color:#719e07>()</span> <span style=color:#719e07>instanceof</span> HttpServletRequest<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"Client address is "</span> <span style=color:#719e07>+</span> <span style=color:#719e07>((</span>HttpServletRequest<span style=color:#719e07>)</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getRequest<span style=color:#719e07>()).</span>getRemoteAddr<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></span><span style=display:flex><span><span style=color:#719e07>if</span> <span style=color:#719e07>(</span>RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getResponse<span style=color:#719e07>()</span> <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>&&</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getResponse<span style=color:#719e07>()</span> <span style=color:#719e07>instanceof</span> HttpServletResponse<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"Response object from RpcContext: "</span> <span style=color:#719e07>+</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getResponse<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><blockquote><p>Note: In order to maintain the neutrality of the protocol, RpcContext.getRequest() and RpcContext.getResponse() return only an Object class, and may be null. So, you have to do null and type checking yourself.</p></blockquote><blockquote><p>Note: Only when server=“jetty” or server=“tomcat” or server=“servlet” is set, can you get HttpServletRequest and HttpServletResponse correctly through the above method, because only these servers implement the servlet container.</p></blockquote><p>In order to simplify programming, you can also use generics to directly obtain specific types of request/response:</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>if</span> <span style=color:#719e07>(</span>RpcContext<span style=color:#719e07>.</span> <span style=color:#268bd2>getContext</span><span style=color:#719e07>().</span> getRequest<span style=color:#719e07>(</span>HttpServletRequest<span style=color:#719e07>.</span> class<span style=color:#719e07>)</span> <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span><span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"Client address is "</span> <span style=color:#719e07>+</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getRequest<span style=color:#719e07>(</span>HttpServletRequest<span style=color:#719e07>.</span>class<span style=color:#719e07>).</span>getRemoteAddr<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></span><span style=display:flex><span><span style=color:#719e07>if</span> <span style=color:#719e07>(</span>RpcContext<span style=color:#719e07>.</span> <span style=color:#268bd2>getContext</span><span style=color:#719e07>().</span> getResponse<span style=color:#719e07>(</span>HttpServletResponse<span style=color:#719e07>.</span> class<span style=color:#719e07>)</span> <span style=color:#719e07>!=</span> <span style=color:#cb4b16>null</span><span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"Response object from RpcContext: "</span> <span style=color:#719e07>+</span> RpcContext<span style=color:#719e07>.</span>getContext<span style=color:#719e07>().</span>getResponse<span style=color:#719e07>(</span>HttpServletResponse<span style=color:#719e07>.</span>class<span style=color:#719e07>));</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>If the request/response does not conform to the specified type, null will also be returned here.</p><h3 id=configure-port-number-and-context-path>Configure port number and Context Path</h3><p>The rest protocol in dubbo will use port 80 by default. If you want to modify the port, configure it directly:</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>In addition, as mentioned earlier, we can use @Path to configure the URL relative path of a single rest service. But in fact, we can also set a basic relative path that is applicable to all rest services, that is, the context path that is often said in java web applications.</p><p>Just add the following contextpath attribute:</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span> contextpath=<span style=color:#2aa198>"services"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>Take the previous code as an example:</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>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"users"</span><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>UserServiceImpl</span> <span style=color:#268bd2>implements</span> UserService <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@POST</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"register"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Consumes</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</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 style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// save the user... |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span> <span style=color:#719e07>}</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>Now the full access path of registerUser()</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:8888/services/users/register |
| </span></span></code></pre></div><p>Note: If you choose an external application server as the rest server, that is, configure</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span> contextpath=<span style=color:#2aa198>"services"</span> server=<span style=color:#2aa198>"servlet"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>You must ensure that the port and contextpath set here are consistent with the port of the external application server and the context path of DispatcherServlet (that is, webapp path plus servlet url pattern). For example, for an application deployed as the tomcat ROOT path, the contextpath here must be exactly the same as <code><url-pattern/></code> of DispacherServlet in web.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><servlet-mapping></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><servlet-name></span>dispatcher<span style=color:#268bd2></servlet-name></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><url-pattern></span>/services/*<span style=color:#268bd2></url-pattern></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2></servlet-mapping></span> |
| </span></span></code></pre></div><h3 id=configure-the-number-of-threads-and-io-threads>Configure the number of threads and IO threads</h3><p>Thread pool size can be configured for rest services</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> threads=<span style=color:#2aa198>"500"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><blockquote><p>Note: The current thread pool settings only take effect when server=“netty” or server=“jetty” or server=“tomcat”. In addition, if server=“servlet”, since the external application server is enabled as the rest server at this time, it is not controlled by dubbo, so the thread pool setting here is also invalid.</p></blockquote><p>If you choose netty server, you can also configure the number of IO worker threads of Netty</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> iothreads=<span style=color:#2aa198>"5"</span> threads=<span style=color:#2aa198>"100"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><h3 id=configure-long-connection>Configure long connection</h3><p>The rest service in Dubbo is accessed by http long connection by default, if you want to switch to short connection, configure it directly</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> keepalive=<span style=color:#2aa198>"false"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><blockquote><p>Note: This configuration is currently only valid for server=“netty” and server=“tomcat”.</p></blockquote><h3 id=configure-the-maximum-number-of-http-connections>Configure the maximum number of HTTP connections</h3><p>The maximum number of HTTP connections that the server provider can receive at the same time can be configured to prevent the REST server from being overwhelmed by too many connections, as a basic self-protection mechanism</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> accepts=<span style=color:#2aa198>"500"</span> server=<span style=color:#2aa198>"tomcat/</span><span style=color:#268bd2>></span> |
| </span></span></code></pre></div><blockquote><p>Note: This configuration is currently only valid for server=“tomcat”.</p></blockquote><h3 id=configure-the-timeout-period-and-the-number-of-http-connections-for-each-consumer>Configure the timeout period and the number of HTTP connections for each consumer</h3><p>If the consumer of the rest service is also a dubbo system, you can configure the maximum timeout period for the consumer to call this rest service and the maximum number of HTTP connections each consumer can initiate like other dubbo RPC mechanisms.</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><dubbo:service</span> interface=<span style=color:#2aa198>"xxx"</span> ref=<span style=color:#2aa198>"xxx"</span> protocol=<span style=color:#2aa198>"rest"</span> timeout=<span style=color:#2aa198>"2000"</span> connections=<span style=color:#2aa198>"10"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>Of course, since this configuration is effective for the consumer side, it can also be configured on the consumer side</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><dubbo:reference</span> id=<span style=color:#2aa198>"xxx"</span> interface=<span style=color:#2aa198>"xxx"</span> timeout=<span style=color:#2aa198>"2000"</span> connections=<span style=color:#2aa198>"10"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>However, in general we recommend configuration to provide such configuration on the service provider side. According to dubbo’s official documentation: “Providers should be configured with as many properties as possible on the Consumer side, so that Provider implementers can think about Provider service characteristics and service quality issues from the very beginning.”</p><blockquote><p>Note: If dubbo’s REST service is published to non-dubbo clients, the configuration on <code><dubbo:service/></code> here is completely invalid, because such clients are not controlled by dubbo.</p></blockquote><h3 id=replace-part-of-spring-xml-configuration-with-annotation>Replace part of Spring XML configuration with Annotation</h3><p>All the above discussions are based on the xml configuration of dubbo in spring. However, dubbo/spring itself also supports the use of annotations for configuration, so we can also follow the steps in dubbo’s official documentation to add related annotations to the implementation of REST services to replace some xml configurations, for example</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>@Service</span><span style=color:#719e07>(</span>protocol <span style=color:#719e07>=</span> <span style=color:#2aa198>"rest"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"users"</span><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>UserServiceImpl</span> <span style=color:#268bd2>implements</span> UserService <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Autowired</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>private</span> UserRepository userRepository<span style=color:#719e07>;</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@POST</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Path</span><span style=color:#719e07>(</span><span style=color:#2aa198>"register"</span><span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Consumes</span><span style=color:#719e07>({</span>MediaType<span style=color:#719e07>.</span> APPLICATION_JSON<span style=color:#719e07>})</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</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 style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#586e75>// save the user |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span> userRepository<span style=color:#719e07>.</span> <span style=color:#268bd2>save</span><span style=color:#719e07>(</span>user<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><p>The configuration of annotation is simpler and more precise, and it is usually easier to maintain (of course, modern IDEs can support such as class name refactoring in xml, so in terms of specific use cases here, xml is also very maintainable). And xml is less intrusive to the code, especially conducive to dynamic modification of configuration, especially if you want to configure connection timeout, maximum number of connections per client, cluster strategy, weight, etc. for a single service. In addition, especially for complex applications or modules, xml provides a central point to cover all components and configurations, which is more clear at a glance and generally more convenient for long-term project maintenance.</p><p>Of course, there is no absolute advantage or disadvantage in choosing which configuration method to choose, and it has nothing to do with personal preference.</p><h3 id=add-custom-filter-interceptor-etc>Add custom Filter, Interceptor, etc.</h3><p>Dubbo’s REST also supports JAX-RS standard Filter and Interceptor to facilitate customized interception of REST request and response processes.</p><p>Among them, Filter is mainly used to access and set HTTP request and response parameters, URI, etc. For example, to set the cache header of an HTTP response:</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>CacheControlFilter</span> <span style=color:#268bd2>implements</span> ContainerResponseFilter <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>filter</span><span style=color:#719e07>(</span>ContainerRequestContext req<span style=color:#719e07>,</span> ContainerResponseContext res<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>if</span> <span style=color:#719e07>(</span>req<span style=color:#719e07>.</span> <span style=color:#268bd2>getMethod</span><span style=color:#719e07>().</span> equals<span style=color:#719e07>(</span><span style=color:#2aa198>"GET"</span><span style=color:#719e07>))</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> res<span style=color:#719e07>.</span>getHeaders<span style=color:#719e07>().</span>add<span style=color:#719e07>(</span><span style=color:#2aa198>"Cache-Control"</span><span style=color:#719e07>,</span> <span style=color:#2aa198>"someValue"</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><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>Interceptor is mainly used to access and modify input and output byte streams, for example, manually add GZIP compression</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>GZIPWriterInterceptor</span> <span style=color:#268bd2>implements</span> WriterInterceptor <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>@Override</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>aroundWriteTo</span><span style=color:#719e07>(</span>WriterInterceptorContext context<span style=color:#719e07>)</span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>throws</span> IOException<span style=color:#719e07>,</span> WebApplicationException <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> OutputStream outputStream <span style=color:#719e07>=</span> context<span style=color:#719e07>.</span> <span style=color:#268bd2>getOutputStream</span><span style=color:#719e07>();</span> |
| </span></span><span style=display:flex><span> context<span style=color:#719e07>.</span>setOutputStream<span style=color:#719e07>(</span><span style=color:#719e07>new</span> GZIPOutputStream<span style=color:#719e07>(</span>outputStream<span style=color:#719e07>));</span> |
| </span></span><span style=display:flex><span> context<span style=color:#719e07>.</span> <span style=color:#268bd2>proceed</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><p>In standard JAX-RS applications, we generally add @Provider annotations for Filter and Interceptor, and then JAX-RS runtime will automatically discover and enable them. In dubbo, we register Filter and Interceptor by adding XML configuration:</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span> extension=<span style=color:#2aa198>"xxx.TraceInterceptor, xxx.TraceFilter"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>Here, we can add all three types of objects, Filter, Interceptor and DynamicFeature, to the <code>extension</code> attribute, and separate them with commas. (DynamicFeature is another interface, which can facilitate us to enable Filter and Interceptor more dynamically. If you are interested, please google yourself.)</p><p>Of course, dubbo itself also supports the concept of Filter, but the Filter and Interceptor we discuss here are closer to the bottom layer of the protocol implementation. Compared with Dubbo’s filter, it can be customized at a lower level.</p><blockquote><p>Note: The XML attribute here is called extension, not interceptor or filter, because in addition to Interceptor and Filter, we will add more extension types in the future.</p></blockquote><p>If the consumer side of REST is also a dubbo system (see the discussion below), you can also configure Interceptor and Filter for the consumer side in a similar way. But note 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, while the consumer corresponds to the ClientResponseFilter:</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>LoggingFilter</span> <span style=color:#268bd2>implements</span> ClientResponseFilter <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> <span style=color:#dc322f>void</span> <span style=color:#268bd2>filter</span><span style=color:#719e07>(</span>ClientRequestContext reqCtx<span style=color:#719e07>,</span> ClientResponseContext resCtx<span style=color:#719e07>)</span> <span style=color:#268bd2>throws</span> IOException <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"status: "</span> <span style=color:#719e07>+</span> resCtx<span style=color:#719e07>.</span>getStatus<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"date: "</span> <span style=color:#719e07>+</span> resCtx<span style=color:#719e07>.</span>getDate<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"last-modified: "</span> <span style=color:#719e07>+</span> resCtx<span style=color:#719e07>.</span>getLastModified<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"location: "</span> <span style=color:#719e07>+</span> resCtx<span style=color:#719e07>.</span>getLocation<span style=color:#719e07>());</span> |
| </span></span><span style=display:flex><span>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"headers:"</span><span style=color:#719e07>);</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>for</span> <span style=color:#719e07>(</span>Entry<span style=color:#719e07><</span>String<span style=color:#719e07>,</span> List<span style=color:#719e07><</span>String<span style=color:#719e07>>></span> header <span style=color:#719e07>:</span> resCtx<span style=color:#719e07>.</span> <span style=color:#268bd2>getHeaders</span><span style=color:#719e07>().</span> entrySet<span style=color:#719e07>())</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>print<span style=color:#719e07>(</span><span style=color:#2aa198>"\t"</span> <span style=color:#719e07>+</span> header<span style=color:#719e07>.</span>getKey<span style=color:#719e07>()</span> <span style=color:#719e07>+</span> <span style=color:#2aa198>" :"</span><span style=color:#719e07>);</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>for</span> <span style=color:#719e07>(</span>String value <span style=color:#719e07>:</span> header<span style=color:#719e07>.</span> <span style=color:#268bd2>getValue</span><span style=color:#719e07>())</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>print<span style=color:#719e07>(</span>value <span style=color:#719e07>+</span> <span style=color:#2aa198>", "</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>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>print<span style=color:#719e07>(</span><span style=color:#2aa198>"\n"</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>System<span style=color:#719e07>.</span>out<span style=color:#719e07>.</span>println<span style=color:#719e07>(</span><span style=color:#2aa198>"media-type: "</span> <span style=color:#719e07>+</span> resCtx<span style=color:#719e07>.</span>getMediaType<span style=color:#719e07>().</span>getType<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=add-custom-exception-handling>Add custom Exception handling</h3><p>Dubbo’s REST also supports JAX-RS standard ExceptionMapper, which can be used to customize the HTTP response that should be returned after a specific exception occurs.</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>CustomExceptionMapper</span> <span style=color:#268bd2>implements</span> ExceptionMapper<span style=color:#719e07><</span>NotFoundException<span style=color:#719e07>></span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>public</span> Response <span style=color:#268bd2>toResponse</span><span style=color:#719e07>(</span>NotFoundException e<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>return</span> Response<span style=color:#719e07>.</span>status<span style=color:#719e07>(</span>Response<span style=color:#719e07>.</span>Status<span style=color:#719e07>.</span>NOT_FOUND<span style=color:#719e07>).</span>entity<span style=color:#719e07>(</span><span style=color:#2aa198>"Oops! the requested resource is not found!"</span><span style=color:#719e07>).</span>type<span style=color:#719e07>(</span><span style=color:#2aa198>"text/plain"</span><span style=color:#719e07>).</span>build<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><p>Similar to Interceptor and Filter, it can be enabled by adding it to the XML configuration file</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span> extension=<span style=color:#2aa198>"xxx.CustomExceptionMapper"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><h3 id=configure-http-log-output>Configure HTTP log output</h3><p>Dubbo rest supports outputting header fields and body message bodies in all HTTP requests/responses.</p><p>Add the following built-in REST filter in the XML configuration:</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span> extension=<span style=color:#2aa198>"org.apache.dubbo.rpc.protocol.rest.support.LoggingFilter"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>Then configure to turn on INFO level log output for at least org.apache.dubbo.rpc.protocol.rest.support in the logging configuration, for example, configure in log4j.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><logger</span> name=<span style=color:#2aa198>"org.apache.dubbo.rpc.protocol.rest.support"</span><span style=color:#268bd2>></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><level</span> value=<span style=color:#2aa198>"INFO"</span><span style=color:#268bd2>/></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><appender-ref</span> ref=<span style=color:#2aa198>"CONSOLE"</span><span style=color:#268bd2>/></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2></logger></span> |
| </span></span></code></pre></div><p>Of course, you can also directly open INFO level log output in ROOT logger</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><root></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2><level</span> value=<span style=color:#2aa198>"INFO"</span> <span style=color:#268bd2>/></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2><appender-ref</span> ref=<span style=color:#2aa198>"CONSOLE"</span><span style=color:#268bd2>/></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2></root></span> |
| </span></span></code></pre></div><p>Then something similar to the following will be output in the log</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>The HTTP headers are: |
| </span></span><span style=display:flex><span>accept: application/json;charset=UTF-8 |
| </span></span><span style=display:flex><span>accept-encoding: gzip, deflate |
| </span></span><span style=display:flex><span>connection: Keep-Alive |
| </span></span><span style=display:flex><span>content-length: 22 |
| </span></span><span style=display:flex><span>content-type: application/json |
| </span></span><span style=display:flex><span>host: 192.168.1.100:8888 |
| </span></span><span style=display:flex><span>user-agent: Apache-HttpClient/4.2.1 (java 1.5) |
| </span></span></code></pre></div><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>The contents of request body are: |
| </span></span><span style=display:flex><span>{"id":1,"name":"dang"} |
| </span></span></code></pre></div><p>After HTTP log output is enabled, in addition to the performance overhead of normal log output, additional overhead will be generated when parsing HTTP requests, for example, because additional memory buffers need to be established to prepare data for log output.</p><h3 id=validation-of-input-parameters>Validation of input parameters</h3><p>Dubbo’s rest supports 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 call protocols, the annotation for verification in rest must be placed on the service interface, for example</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>interface</span> <span style=color:#268bd2>UserService</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> User <span style=color:#268bd2>getUser</span><span style=color:#719e07>(</span><span style=color:#268bd2>@Min</span><span style=color:#719e07>(</span>value<span style=color:#719e07>=</span><span style=color:#2aa198>1L</span><span style=color:#719e07>,</span> message<span style=color:#719e07>=</span><span style=color:#2aa198>"User ID must be greater than 1"</span><span style=color:#719e07>)</span> Long id<span style=color:#719e07>);</span> |
| </span></span><span style=display:flex><span><span style=color:#719e07>}</span> |
| </span></span></code></pre></div><p>Of course, in many other bean validation application scenarios, the annotation is placed on the implementation class instead of the interface. At least one advantage of putting the annotation on the interface is that dubbo clients can share the information of this interface, and dubbo can complete the input verification locally without even making remote calls.</p><p>Then open the validation in the XML configuration according to dubbo’s standard way:</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><dubbo:service</span> interface=<span style=color:#2aa198>xxx.UserService"</span> ref=<span style=color:#2aa198>"userService"</span> protocol=<span style=color:#2aa198>"rest"</span> validation=<span style=color:#2aa198>"true"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><p>In many other remote call protocols of dubbo, if the input verification fails, <code>RpcException</code> is directly thrown to the client, but in rest, since the client is often a non-dubbo or even non-java system, it is inconvenient to directly throw a Java exception . Therefore, currently we return validation errors as 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><violationReport></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><constraint</span> Violations<span style=color:#268bd2>></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><path></span>getUserArgument0<span style=color:#268bd2></path></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><message></span>User ID must be greater than 1<span style=color:#268bd2></message></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2><value></span>0<span style=color:#268bd2></value></span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2></constraintViolations></span> |
| </span></span><span style=display:flex><span><span style=color:#268bd2></violationReport></span> |
| </span></span></code></pre></div><p>Return values in other data formats will be supported later. As for how to internationalize the validation error message, just refer to the relevant documents of bean validation.</p><p>If you think that the default validation error return format does not meet your requirements, you can add a custom ExceptionMapper to freely customize the error return format as described in the above section. It should be noted that this ExceptionMapper must use a generic declaration to catch dubbo’s RpcException, in order to successfully override the default exception handling strategy of dubbo rest. In order to simplify the operation, in fact, the easiest way here is to directly inherit the RpcExceptionMapper of dubbo rest, and override the method of handling verification exceptions</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>MyValidationExceptionMapper</span> <span style=color:#268bd2>extends</span> RpcExceptionMapper <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> |
| </span></span><span style=display:flex><span> <span style=color:#268bd2>protected</span> Response <span style=color:#268bd2>handleConstraintViolationException</span><span style=color:#719e07>(</span>ConstraintViolationException cve<span style=color:#719e07>)</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> ViolationReport report <span style=color:#719e07>=</span> <span style=color:#719e07>new</span> ViolationReport<span style=color:#719e07>();</span> |
| </span></span><span style=display:flex><span> <span style=color:#719e07>for</span> <span style=color:#719e07>(</span>ConstraintViolation cv <span style=color:#719e07>:</span> cve<span style=color:#719e07>.</span> <span style=color:#268bd2>getConstraintViolations</span><span style=color:#719e07>())</span> <span style=color:#719e07>{</span> |
| </span></span><span style=display:flex><span> report<span style=color:#719e07>.</span>addConstraintViolation<span style=color:#719e07>(</span><span style=color:#719e07>new</span> RestConstraintViolation<span style=color:#719e07>(</span> |
| </span></span><span style=display:flex><span> cv<span style=color:#719e07>.</span>getPropertyPath<span style=color:#719e07>().</span>toString<span style=color:#719e07>(),</span> |
| </span></span><span style=display:flex><span> cv<span style=color:#719e07>.</span> <span style=color:#268bd2>getMessage</span><span style=color:#719e07>(),</span> |
| </span></span><span style=display:flex><span> cv<span style=color:#719e07>.</span>getInvalidValue<span style=color:#719e07>()</span> <span style=color:#719e07>==</span> <span style=color:#cb4b16>null</span> <span style=color:#719e07>?</span> <span style=color:#2aa198>"null"</span> <span style=color:#719e07>:</span> cv<span style=color:#719e07>.</span>getInvalidValue<span style=color:#719e07>().</span>toString<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:#586e75>// Use json output instead of xml output |
| </span></span></span><span style=display:flex><span><span style=color:#586e75></span> <span style=color:#719e07>return</span> Response<span style=color:#719e07>.</span>status<span style=color:#719e07>(</span>Response<span style=color:#719e07>.</span>Status<span style=color:#719e07>.</span>INTERNAL_SERVER_ERROR<span style=color:#719e07>).</span>entity<span style=color:#719e07>(</span>report<span style=color:#719e07>).</span>type<span style=color:#719e07>(</span>ContentType<span style=color:#719e07>.</span>APPLICATION_JSON_UTF_8<span style=color:#719e07>).</span>build<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><p>Then add this ExceptionMapper to the XML configuration:</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><dubbo:protocol</span> name=<span style=color:#2aa198>"rest"</span> port=<span style=color:#2aa198>"8888"</span> extension=<span style=color:#2aa198>"xxx.MyValidationExceptionMapper"</span><span style=color:#268bd2>/></span> |
| </span></span></code></pre></div><div id=pre-footer><h2>Feedback</h2><p class=feedback--prompt>Was this page helpful?</p><button class="btn btn-primary mb-4 feedback--yes">Yes</button> |
| <button class="btn btn-primary mb-4 feedback--no">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"),no.disabled=!0,no.classList.add("feedback--button__disabled")};yes.addEventListener("click",()=>{sendFeedback(1),disableButtons(),document.querySelector(".feedback--response").classList.remove("feedback--response__hidden")}),no.addEventListener("click",()=>{sendFeedback(0),disableButtons(),document.querySelector(".feedback--response").classList.remove("feedback--response__hidden")})</script><br><div class="text-muted mt-5 pt-3 border-top">Last modified January 2, 2023: <a href=https://github.com/apache/dubbo-website/commit/95a9f4f6c1cbb4425fe12411cd046f4463fee6b5>Enhance en docs (#1798) (95a9f4f6c1)</a></div></div></main><div class="d-none d-xl-block col-xl-2 td-toc d-print-none"><div class="td-page-meta ml-2 pb-1 pt-2 mb-0"><a href=https://github.com/apache/dubbo-website/edit/master/content/en/docs3-v2/java-sdk/reference-manual/protocol/rest.md target=_blank><i class="fa fa-edit fa-fw"></i> Edit this page</a> |
| <a href="https://github.com/apache/dubbo-website/new/master/content/en/docs3-v2/java-sdk/reference-manual/protocol/rest.md?filename=change-me.md&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+Edit+the+%22front+matter%22+section+at+the+top+of+the+page+%28weight+controls+how+its+ordered+amongst+other+pages+in+the+same+directory%3B+lowest+number+first%29.%0A%2A+Add+a+good+commit+message+at+the+bottom+of+the+page+%28%3C80+characters%3B+use+the+extended+description+field+for+more+detail%29.%0A%2A+Create+a+new+branch+so+you+can+preview+your+new+file+and+request+a+review+via+Pull+Request.%0A" target=_blank><i class="fa fa-edit fa-fw"></i> Create child page</a> |
| <a href="https://github.com/apache/dubbo-website/issues/new?title=Rest%20protocol" target=_blank><i class="fab fa-github fa-fw"></i> Create an issue</a> |
| <a href=https://github.com/apache/dubbo/issues/new target=_blank><i class="fas fa-tasks fa-fw"></i> Create project issue</a></div><nav id=TableOfContents><ul><li><ul><li><a href=#quick-start>Quick Start</a></li><li><a href=#detailed-explanation-of-rest-service-provider>Detailed explanation of REST service provider</a></li><li><a href=#implementation-of-http-postget>Implementation of HTTP POST/GET</a></li><li><a href=#annotation-is-placed-in-the-interface-class-or-the-implementation-class>Annotation is placed in the interface class or the implementation class</a></li><li><a href=#support-for-multiple-data-formats-such-as-json-and-xml>Support for multiple data formats such as JSON and XML</a></li><li><a href=#chinese-character-support>Chinese character support</a></li><li><a href=#additional-requirements-for-xml-data-format>Additional requirements for XML data format</a></li><li><a href=#custom-serialization>Custom serialization</a></li><li><a href=#configure-the-implementation-of-rest-server>Configure the implementation of REST Server</a></li><li><a href=#get-context-information>Get context information</a></li><li><a href=#configure-port-number-and-context-path>Configure port number and Context Path</a></li><li><a href=#configure-the-number-of-threads-and-io-threads>Configure the number of threads and IO threads</a></li><li><a href=#configure-long-connection>Configure long connection</a></li><li><a href=#configure-the-maximum-number-of-http-connections>Configure the maximum number of HTTP connections</a></li><li><a href=#configure-the-timeout-period-and-the-number-of-http-connections-for-each-consumer>Configure the timeout period and the number of HTTP connections for each consumer</a></li><li><a href=#replace-part-of-spring-xml-configuration-with-annotation>Replace part of Spring XML configuration with Annotation</a></li><li><a href=#add-custom-filter-interceptor-etc>Add custom Filter, Interceptor, etc.</a></li><li><a href=#add-custom-exception-handling>Add custom Exception handling</a></li><li><a href=#configure-http-log-output>Configure HTTP log output</a></li><li><a href=#validation-of-input-parameters>Validation of input parameters</a></li></ul></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 order-sm-2"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Dubbo mailing list archive" aria-label="Dubbo mailing list archive"><a class=text-white target=_blank rel="noopener noreferrer" href=https://lists.apache.org/list.html?dev@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-6 col-sm-4 text-right text-xs-center order-sm-3"><ul class="list-inline mb-0"><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title=GitHub aria-label=GitHub><a class=text-white target=_blank rel="noopener noreferrer" href=https://github.com/apache/dubbo><i class="fab fa-github"></i></a></li><li class="list-inline-item mx-2 h3" data-toggle=tooltip data-placement=top title="Subscribe to mailing list" aria-label="Subscribe to mailing list"><a class=text-white target=_blank rel="noopener noreferrer" href=mailto:dev-subscribe@dubbo.apache.org><i class="fa fa-envelope"></i></a></li></ul></div><div class="col-12 col-sm-4 text-center py-2 order-sm-2"><small class=text-white>© 2023 The Apache Software Foundation. Apache and the Apache feather logo are trademarks of The Apache Software Foundation. All Rights Reserved</small></div></div></div></footer><div class="row pt-2 pb-2 footer-margin-0"><div class="container-fluid mx-sm-5"><div class=text-center id=my-footer><img style=float:left alt=apache_logo src=/imgs/apache_logo.png><ul><li><a href=https://www.apache.org>Foundation</a></li><li><a href=https://www.apache.org/licenses/>License</a></li><li><a href=https://dubbo.apache.org/en/docs/notices/security/>Security</a></li><li><a href=https://www.apache.org/events/current-event>Events</a></li><li><a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a></li><li><a href=https://privacy.apache.org/policies/privacy-policy-public.html>Privacy</a></li><li><a href=https://www.apache.org/foundation/thanks.html>Thanks</a></li></ul></div></div></div><script src=/js/popper.min.js integrity=sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49 crossorigin=anonymous></script> |
| <script src=/js/bootstrap.min.js integrity=sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy crossorigin=anonymous></script> |
| <script src=/js/main.min.a4534a01940be8c082c4c0e6777b61df9884f202b61c9519352adb6d1039d5aa.js integrity="sha256-pFNKAZQL6MCCxMDmd3th35iE8gK2HJUZNSrbbRA51ao=" crossorigin=anonymous></script> |
| <script src=https://cdn.jsdelivr.net/npm/@docsearch/js@3></script> |
| <script>docsearch({appId:"L5F4T9F0I1",apiKey:"364ae307e1da9d02b2335675e9db1eb1",indexName:"apache_dubbo",container:"#docsearch",debug:!1}),docsearch({appId:"L5F4T9F0I1",apiKey:"364ae307e1da9d02b2335675e9db1eb1",indexName:"apache_dubbo",container:"#docsearch_zh_home",debug:!1})</script></body></html> |