You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by li...@apache.org on 2024/11/20 08:12:07 UTC

(dubbo) branch 3.3 updated: [optimize]Refactor the dubbo-demo module (#14871)

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

liujun pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new 7dc57a3b5c [optimize]Refactor the dubbo-demo module (#14871)
7dc57a3b5c is described below

commit 7dc57a3b5cf16cdddb42ff6e1e559c3cf68231e5
Author: heliang666s <14...@users.noreply.github.com>
AuthorDate: Wed Nov 20 16:12:02 2024 +0800

    [optimize]Refactor the dubbo-demo module (#14871)
---
 dubbo-demo/README.md                               |  33 ++--
 .../dubbo-demo-annotation-consumer/pom.xml         | 109 -----------
 .../apache/dubbo/demo/consumer/Application.java    |  47 -----
 .../demo/consumer/comp/DemoServiceComponent.java   |  40 ----
 .../resources/spring/dubbo-consumer.properties     |  22 ---
 .../dubbo-demo-annotation-provider/pom.xml         | 111 -----------
 .../apache/dubbo/demo/provider/Application.java    |  46 -----
 .../dubbo/demo/provider/DemoServiceImpl.java       |  44 -----
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../resources/spring/dubbo-provider.properties     |  22 ---
 .../dubbo-demo-api/dubbo-demo-api-consumer/pom.xml |   2 +-
 .../apache/dubbo/demo/consumer/Application.java    |   4 +-
 .../dubbo-demo-api-interface}/pom.xml              |   9 +-
 .../org/apache/dubbo/api}/demo/DemoService.java    |   2 +-
 .../dubbo-demo-api/dubbo-demo-api-provider/pom.xml |   2 +-
 .../apache/dubbo/demo/provider/Application.java    |   2 +-
 .../dubbo/demo/provider/DemoServiceImpl.java       |   2 +-
 dubbo-demo/dubbo-demo-api/pom.xml                  |   1 +
 dubbo-demo/dubbo-demo-generic-call/pom.xml         | 103 ----------
 .../dubbo/demo/consumer/GenericApplication.java    |  74 -------
 .../src/main/resources/log4j2.xml                  |  29 ---
 dubbo-demo/dubbo-demo-interface/pom.xml            |  69 -------
 .../org/apache/dubbo/demo/GreetingService.java     |  24 ---
 .../org/apache/dubbo/demo/RestDemoService.java     |  89 ---------
 .../java/org/apache/dubbo/demo/TripleService.java  |  21 --
 .../apache/dubbo/demo/rest/api/CurlService.java    |  30 ---
 .../rest/api/DubboServiceAnnotationService.java    |  28 ---
 .../demo/rest/api/ExceptionMapperService.java      |  28 ---
 .../dubbo/demo/rest/api/HttpMethodService.java     |  68 -------
 .../HttpRequestAndResponseRPCContextService.java   |  44 -----
 .../dubbo/demo/rest/api/JaxRsRestDemoService.java  | 111 -----------
 .../dubbo/demo/rest/api/SpringRestDemoService.java |  81 --------
 .../src/main/java/po/TestPO.java                   |  64 ------
 .../src/main/java/po/User.java                     |  72 -------
 .../dubbo-demo-native-consumer/pom.xml             | 216 ---------------------
 .../dubbo/demo/graalvm/consumer/Application.java   |  70 -------
 .../META-INF/native-image/proxy-config.json        |   7 -
 .../META-INF/native-image/reflect-config.json      |  17 --
 .../src/main/resources/dubbo.properties            |   1 -
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../org/apache/dubbo/graalvm/demo/DemoService.java |  22 ---
 .../dubbo-demo-native-provider/pom.xml             | 216 ---------------------
 .../dubbo/demo/graalvm/provider/Application.java   |  74 -------
 .../demo/graalvm/provider/DemoServiceImpl.java     |  30 ---
 .../META-INF/native-image/reflect-config.json      |  25 ---
 .../META-INF/native-image/resource-config.json     |  13 --
 .../src/main/resources/dubbo.properties            |   1 -
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../dubbo-demo-spring-boot-idl-consumer}/pom.xml   |  20 +-
 .../idl/demo/consumer/ConsumerApplication.java     |  49 +++++
 .../src/main/proto/helloworld.proto                |  14 --
 .../src/main/resources/application.yml             |  16 +-
 .../src/main/resources/log4j2.xml                  |   2 +-
 .../dubbo-demo-spring-boot-idl-provider}/pom.xml   |  31 ++-
 .../idl/demo/provider}/GreeterServiceImpl.java     |  38 +---
 .../idl/demo/provider/ProviderApplication.java}    |  23 +--
 .../src/main/proto/helloworld.proto                |  14 --
 .../src/main/resources/application.yml             |  14 +-
 .../src/main/resources/log4j2.xml                  |   0
 .../pom.xml                                        |  33 ++--
 .../src/main/resources/application.yml             |   2 +-
 dubbo-demo/dubbo-demo-spring-boot/pom.xml          |   2 +
 .../java/org/apache/dubbo/demo/GreeterService.java |  46 -----
 .../apache/dubbo/demo/GreeterWrapperService.java   |  25 ---
 .../dubbo/demo/GreeterWrapperServiceImpl.java      |  48 -----
 .../apache/dubbo/demo/consumer/ApiConsumer.java    | 118 -----------
 .../dubbo/demo/consumer/ApiWrapperConsumer.java    |  61 ------
 .../apache/dubbo/demo/provider/ApiProvider.java    |  49 -----
 .../dubbo/demo/provider/ApiWrapperProvider.java    |  50 -----
 .../dubbo-demo-spring-mvc-rest-consumer/pom.xml    | 146 --------------
 .../dubbo/demo/rest/api/SpringMvcRestConsumer.java |  74 -------
 .../dubbo/demo/rest/api/config/DubboConfig.java    |  22 ---
 .../consumer/SpringRestDemoServiceConsumer.java    |  28 ---
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../src/main/resources/spring/rest-consumer.xml    |  37 ----
 .../dubbo-demo-spring-mvc-rest-provider/pom.xml    | 146 --------------
 .../dubbo/demo/rest/api/config/DubboConfig.java    |  22 ---
 .../rest/api/impl/SpringRestDemoServiceImpl.java   |  95 ---------
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../src/main/resources/spring/rest-provider.xml    |  38 ----
 .../dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml | 113 -----------
 .../apache/dubbo/demo/consumer/Application.java    | 106 ----------
 .../src/main/resources/dubbo-migration.yaml        |  22 ---
 .../src/main/resources/dubbo.properties            |   1 -
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../src/main/resources/spring/dubbo-consumer.xml   |  43 ----
 .../dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml | 120 ------------
 .../apache/dubbo/demo/provider/Application.java    |  27 ---
 .../dubbo/demo/provider/DemoServiceImpl.java       |  55 ------
 .../dubbo/demo/provider/GreetingServiceImpl.java   |  29 ---
 .../dubbo/demo/provider/RestDemoServiceImpl.java   |  93 ---------
 .../dubbo/demo/provider/TripleServiceImpl.java     |  27 ---
 .../src/main/resources/dubbo.properties            |   3 -
 .../src/main/resources/log4j2.xml                  |  29 ---
 .../src/main/resources/spring/dubbo-provider.xml   |  48 -----
 dubbo-demo/dubbo-demo-xml/pom.xml                  |  61 ------
 dubbo-demo/pom.xml                                 |   7 +-
 97 files changed, 146 insertions(+), 4200 deletions(-)

diff --git a/dubbo-demo/README.md b/dubbo-demo/README.md
index 3220be4a64..8dcfecb189 100644
--- a/dubbo-demo/README.md
+++ b/dubbo-demo/README.md
@@ -1,29 +1,18 @@
 # Dubbo Demo
 
-This directory contains basic usages of Dubbo to help Dubbo developers for debugging and smoke test purpose. If you are looking for Dubbo samples for study purpose, you should look into [here](https://github.com/apache/dubbo-samples) where you will find comprehensive usages for how to use Dubbo in different scenarios with the different features.
+This directory contains basic usages of Dubbo to help Dubbo developers for debugging and smoke test purpose. If you are looking for Dubbo samples for study purpose, you should look into here where you will find comprehensive usages for how to use Dubbo in different scenarios with the different features.
 
-## How To Build
+## Brief introduction
 
-To build all demo applications from the source code, simply step into '*dubbo-demo*' directory and use maven to build:
+Dubbo provides three demos that illustrate different usage scenarios:
 
-```bash
-mvn clean package
-```
+1. **`dubbo-demo-api`**
+   This demo demonstrates the basic usage of Dubbo, serving as a fundamental example. It showcases how to define and implement a simple service using Dubbo, along with how to register and consume the service. This is a great starting point for understanding core concepts in Dubbo, such as interface definitions, service exposure, and service consumption.
+2. **`dubbo-demo-springboot`**
+   This demo illustrates the integration of Dubbo with Spring Boot, showing how Dubbo services can be utilized and configured within a Spring Boot application. It demonstrates how to configure and manage Dubbo services seamlessly through Spring Boot, making it ideal for developers leveraging the popular Spring Boot framework.
+3. **`dubbo-demo-springboot-idl`**
+   This demo focuses on showcasing how to use Dubbo with Spring Boot when IDL (Interface Definition Language) files such as Proto files are available. It illustrates how developers can work with Dubbo services defined through IDL, integrating them into a Spring Boot application.
 
-After build completes, a couple of fat jars are generated under '*target*' directory under each module directories, for example: '*dubbo-demo-api-provider-${project.version}.jar*' can be found under the directory '*dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/target*'.
+## How to run
 
-## How To Run
-
-Since the generated artifacts are fat jars backed by spring boot maven plugin, they can be executed directly with '*java -jar*', and since multicast is used for service registration, a necessary system property '**-Djava.net.preferIPv4Stack=true**' is required in order to registry and discover the demo service properly. 
-
-Use '*dubbo-demo/dubbo-demo-api*' as an example, to start the provider '*dubbo-demo-api-provider*', execute the following command:
-
-```bash
-java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-api-provider-${project.version}.jar
-```
-
-To run the consumer '*dubbo-demo-api-consumer*', execute the following command:
-
-```bash
-java -Djava.net.preferIPv4Stack=true -jar dubbo-demo-api-consumer-${project.version}.jar
-```
+First, you need to set up Zookeeper as the registry center. Use the `cd` command to navigate to the specific module directory, then run `mvn clean compile` (particularly for the `dubbo-demo-springboot-idl` module, as code generated from the proto files is located in the target directory). Start the provider first, followed by the consumer, to experience the functionality of Dubbo.
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml
deleted file mode 100644
index 85b651833c..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/pom.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-annotation</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-annotation-consumer</artifactId>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-spring</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-
-</project>
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
deleted file mode 100644
index 8f6d2e9c7d..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.consumer;
-
-import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-import org.apache.dubbo.demo.DemoService;
-import org.apache.dubbo.demo.consumer.comp.DemoServiceComponent;
-
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-
-public class Application {
-    /**
-     * In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before
-     * launch the application
-     */
-    public static void main(String[] args) {
-        AnnotationConfigApplicationContext context =
-                new AnnotationConfigApplicationContext(ConsumerConfiguration.class);
-        context.start();
-        DemoService service = context.getBean("demoServiceComponent", DemoServiceComponent.class);
-        String hello = service.sayHello("world");
-        System.out.println("result :" + hello);
-    }
-
-    @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.demo.consumer.comp")
-    @PropertySource("classpath:/spring/dubbo-consumer.properties")
-    @ComponentScan(value = {"org.apache.dubbo.demo.consumer.comp"})
-    static class ConsumerConfiguration {}
-}
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/java/org/apache/dubbo/demo/consumer/comp/DemoServiceComponent.java b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/java/org/apache/dubbo/demo/consumer/comp/DemoServiceComponent.java
deleted file mode 100644
index 93d1eca356..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/java/org/apache/dubbo/demo/consumer/comp/DemoServiceComponent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.consumer.comp;
-
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.apache.dubbo.demo.DemoService;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.springframework.stereotype.Component;
-
-@Component("demoServiceComponent")
-public class DemoServiceComponent implements DemoService {
-    @DubboReference
-    private DemoService demoService;
-
-    @Override
-    public String sayHello(String name) {
-        return demoService.sayHello(name);
-    }
-
-    @Override
-    public CompletableFuture<String> sayHelloAsync(String name) {
-        return null;
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/resources/spring/dubbo-consumer.properties b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/resources/spring/dubbo-consumer.properties
deleted file mode 100644
index 151fc038a0..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/resources/spring/dubbo-consumer.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-dubbo.application.name=dubbo-demo-annotation-consumer
-dubbo.registry.address=zookeeper://127.0.0.1:2181
-dubbo.protocol.port=-1
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml
deleted file mode 100644
index 720724073b..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/pom.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-annotation</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-annotation-provider</artifactId>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-spring</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-
-</project>
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
deleted file mode 100644
index 56fe623cc9..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
-
-import org.springframework.context.annotation.AnnotationConfigApplicationContext;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.PropertySource;
-
-public class Application {
-    public static void main(String[] args) throws Exception {
-        AnnotationConfigApplicationContext context =
-                new AnnotationConfigApplicationContext(ProviderConfiguration.class);
-        context.start();
-        System.in.read();
-    }
-
-    @Configuration
-    @EnableDubbo(scanBasePackages = "org.apache.dubbo.demo.provider")
-    @PropertySource("classpath:/spring/dubbo-provider.properties")
-    static class ProviderConfiguration {
-        @Bean
-        public RegistryConfig registryConfig() {
-            RegistryConfig registryConfig = new RegistryConfig();
-            registryConfig.setAddress("zookeeper://127.0.0.1:2181");
-            return registryConfig;
-        }
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
deleted file mode 100644
index 8b4f944650..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.config.annotation.DubboService;
-import org.apache.dubbo.demo.DemoService;
-import org.apache.dubbo.rpc.RpcContext;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@DubboService
-public class DemoServiceImpl implements DemoService {
-    private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
-
-    @Override
-    public String sayHello(String name) {
-        logger.info("Hello " + name + ", request from consumer: "
-                + RpcContext.getServiceContext().getRemoteAddress());
-        return "Hello " + name + ", response from provider: "
-                + RpcContext.getServiceContext().getLocalAddress();
-    }
-
-    @Override
-    public CompletableFuture<String> sayHelloAsync(String name) {
-        return null;
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/spring/dubbo-provider.properties b/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/spring/dubbo-provider.properties
deleted file mode 100644
index 4b4913e025..0000000000
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-provider/src/main/resources/spring/dubbo-provider.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-#
-#   Licensed to the Apache Software Foundation (ASF) under one or more
-#   contributor license agreements.  See the NOTICE file distributed with
-#   this work for additional information regarding copyright ownership.
-#   The ASF licenses this file to You under the Apache License, Version 2.0
-#   (the "License"); you may not use this file except in compliance with
-#   the License.  You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#
-#
-
-dubbo.application.name=dubbo-demo-annotation-provider
-dubbo.protocol.name=dubbo
-dubbo.protocol.port=-1
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml
index ce9ef31248..b7a69efaba 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml
@@ -33,7 +33,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
+      <artifactId>dubbo-demo-api-interface</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
     <dependency>
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
index 07cbefed29..05087147ba 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
@@ -16,13 +16,13 @@
  */
 package org.apache.dubbo.demo.consumer;
 
+import org.apache.dubbo.api.demo.DemoService;
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.ProtocolConfig;
 import org.apache.dubbo.config.ReferenceConfig;
 import org.apache.dubbo.config.RegistryConfig;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.demo.DemoService;
 import org.apache.dubbo.rpc.service.GenericService;
 
 public class Application {
@@ -42,7 +42,7 @@ public class Application {
         bootstrap
                 .application(new ApplicationConfig("dubbo-demo-api-consumer"))
                 .registry(new RegistryConfig(REGISTRY_URL))
-                .protocol(new ProtocolConfig(CommonConstants.DUBBO, -1))
+                .protocol(new ProtocolConfig(CommonConstants.TRIPLE, -1))
                 .reference(reference)
                 .start();
 
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface/pom.xml b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-interface/pom.xml
similarity index 85%
rename from dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface/pom.xml
rename to dubbo-demo/dubbo-demo-api/dubbo-demo-api-interface/pom.xml
index 2184cc8e12..0dfa6609b8 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface/pom.xml
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-interface/pom.xml
@@ -16,18 +16,19 @@
   limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-native</artifactId>
+    <artifactId>dubbo-demo</artifactId>
     <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
+    <relativePath>../../pom.xml</relativePath>
   </parent>
 
-  <artifactId>dubbo-demo-native-interface</artifactId>
+  <artifactId>dubbo-demo-api-interface</artifactId>
 
   <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <skip_maven_deploy>true</skip_maven_deploy>
   </properties>
+
 </project>
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/DemoService.java b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-interface/src/main/java/org/apache/dubbo/api/demo/DemoService.java
similarity index 96%
rename from dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/DemoService.java
rename to dubbo-demo/dubbo-demo-api/dubbo-demo-api-interface/src/main/java/org/apache/dubbo/api/demo/DemoService.java
index 26f1ac524a..c69307f3a2 100644
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/DemoService.java
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-interface/src/main/java/org/apache/dubbo/api/demo/DemoService.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.demo;
+package org.apache.dubbo.api.demo;
 
 import java.util.concurrent.CompletableFuture;
 
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/pom.xml b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/pom.xml
index c29e4ababf..74e0ca63ac 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/pom.xml
@@ -35,7 +35,7 @@
   <dependencies>
     <dependency>
       <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
+      <artifactId>dubbo-demo-api-interface</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
     <dependency>
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
index d6f70a57a1..e51dda0dfe 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
@@ -16,13 +16,13 @@
  */
 package org.apache.dubbo.demo.provider;
 
+import org.apache.dubbo.api.demo.DemoService;
 import org.apache.dubbo.common.constants.CommonConstants;
 import org.apache.dubbo.config.ApplicationConfig;
 import org.apache.dubbo.config.ProtocolConfig;
 import org.apache.dubbo.config.RegistryConfig;
 import org.apache.dubbo.config.ServiceConfig;
 import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.demo.DemoService;
 
 public class Application {
 
diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
index e7760f53a7..1a5b896783 100644
--- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
+++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
@@ -16,7 +16,7 @@
  */
 package org.apache.dubbo.demo.provider;
 
-import org.apache.dubbo.demo.DemoService;
+import org.apache.dubbo.api.demo.DemoService;
 import org.apache.dubbo.rpc.RpcContext;
 
 import java.util.concurrent.CompletableFuture;
diff --git a/dubbo-demo/dubbo-demo-api/pom.xml b/dubbo-demo/dubbo-demo-api/pom.xml
index 33ed7504db..a81c9a03db 100644
--- a/dubbo-demo/dubbo-demo-api/pom.xml
+++ b/dubbo-demo/dubbo-demo-api/pom.xml
@@ -30,6 +30,7 @@
   <modules>
     <module>dubbo-demo-api-provider</module>
     <module>dubbo-demo-api-consumer</module>
+    <module>dubbo-demo-api-interface</module>
   </modules>
 
   <properties>
diff --git a/dubbo-demo/dubbo-demo-generic-call/pom.xml b/dubbo-demo/dubbo-demo-generic-call/pom.xml
deleted file mode 100644
index 47d82bcc45..0000000000
--- a/dubbo-demo/dubbo-demo-generic-call/pom.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-generic-call</artifactId>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-demo/dubbo-demo-generic-call/src/main/java/org/apache/dubbo/demo/consumer/GenericApplication.java b/dubbo-demo/dubbo-demo-generic-call/src/main/java/org/apache/dubbo/demo/consumer/GenericApplication.java
deleted file mode 100644
index 9b8a2210cb..0000000000
--- a/dubbo-demo/dubbo-demo-generic-call/src/main/java/org/apache/dubbo/demo/consumer/GenericApplication.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.consumer;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.common.utils.JsonUtils;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.MetadataReportConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.rpc.service.GenericService;
-
-public class GenericApplication {
-
-    public static void main(String[] args) {
-        runWithBootstrap(args);
-    }
-
-    private static void runWithBootstrap(String[] args) {
-        ReferenceConfig<GenericService> reference = new ReferenceConfig<>();
-        reference.setInterface("org.apache.dubbo.demo.DemoService");
-
-        String param = "dubbo generic invoke";
-
-        if (args.length > 0 && CommonConstants.GENERIC_SERIALIZATION_GSON.equals(args[0])) {
-            reference.setGeneric(CommonConstants.GENERIC_SERIALIZATION_GSON);
-            param = JsonUtils.toJson(param + " gson");
-        } else {
-            reference.setGeneric("true");
-        }
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("demo-consumer");
-
-        MetadataReportConfig metadataReportConfig = new MetadataReportConfig();
-        metadataReportConfig.setAddress("zookeeper://127.0.0.1:2181");
-
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-        bootstrap
-                .application(applicationConfig)
-                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
-                .protocol(new ProtocolConfig(CommonConstants.DUBBO, -1))
-                .reference(reference)
-                .start();
-
-        // generic invoke
-        GenericService genericService = bootstrap.getCache().get(reference);
-        while (true) {
-            try {
-                Object genericInvokeResult =
-                        genericService.$invoke("sayHello", new String[] {String.class.getName()}, new Object[] {param});
-                System.out.println(genericInvokeResult);
-                Thread.sleep(1000);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-generic-call/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-generic-call/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-generic-call/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-interface/pom.xml b/dubbo-demo/dubbo-demo-interface/pom.xml
deleted file mode 100644
index 0c06266cb1..0000000000
--- a/dubbo-demo/dubbo-demo-interface/pom.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-  <artifactId>dubbo-demo-interface</artifactId>
-  <packaging>jar</packaging>
-  <name>${project.artifactId}</name>
-  <description>The demo module of dubbo project</description>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <!-- JAX-RS API -->
-    <dependency>
-      <groupId>javax.ws.rs</groupId>
-      <artifactId>javax.ws.rs-api</artifactId>
-    </dependency>
-    <!-- Spring Web MVC -->
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-web</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>io.swagger</groupId>
-      <artifactId>swagger-jaxrs</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>javax.ws.rs</groupId>
-          <artifactId>jsr311-api</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/GreetingService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/GreetingService.java
deleted file mode 100644
index 38c7a6072d..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/GreetingService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo;
-
-/**
- *
- */
-public interface GreetingService {
-    String hello();
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java
deleted file mode 100644
index 0405b739f2..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/RestDemoService.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-
-import po.TestPO;
-
-@Path("/demoService")
-public interface RestDemoService {
-    @GET
-    @Path("/hello")
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    Integer hello(@QueryParam("a") Integer a, @QueryParam("b") Integer b);
-
-    @GET
-    @Path("/error")
-    String error();
-
-    @POST
-    @Path("/say")
-    @Consumes({MediaType.TEXT_PLAIN})
-    String sayHello(String name);
-
-    @GET
-    @Path("/getRemoteApplicationName")
-    String getRemoteApplicationName();
-
-    @POST
-    @Path("/testBody1")
-    @Consumes({MediaType.TEXT_PLAIN})
-    Integer testBody(Integer b);
-
-    @POST
-    @Path("/testBody2")
-    @Consumes({MediaType.TEXT_PLAIN})
-    String testBody2(String b);
-
-    @POST
-    @Path("/testBody3")
-    @Consumes({MediaType.TEXT_PLAIN})
-    Boolean testBody2(Boolean b);
-
-    @POST
-    @Path("/testBody4")
-    @Consumes({MediaType.TEXT_PLAIN})
-    TestPO testBody2(TestPO b);
-
-    @POST
-    @Path("/testBody5")
-    @Consumes({MediaType.APPLICATION_JSON})
-    @Produces({MediaType.APPLICATION_JSON})
-    TestPO testBody5(TestPO testPO);
-
-    @POST
-    @Path("/testForm1")
-    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-    @Produces(MediaType.TEXT_PLAIN)
-    String testForm1(@FormParam("name") String test);
-
-    @POST
-    @Path("/testForm2")
-    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
-    @Produces(MediaType.APPLICATION_FORM_URLENCODED)
-    MultivaluedMap testForm2(MultivaluedMap map);
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/TripleService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/TripleService.java
deleted file mode 100644
index 8aed07b507..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/TripleService.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo;
-
-public interface TripleService {
-    String hello();
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/CurlService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/CurlService.java
deleted file mode 100644
index b77cded2f5..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/CurlService.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-
-@Path("/curl")
-public interface CurlService {
-    // curl -X GET http://localhost:8888/services/curl
-    // http://localhost:8888/services/curl
-    @GET
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String curl();
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/DubboServiceAnnotationService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/DubboServiceAnnotationService.java
deleted file mode 100644
index 478b3e6dc2..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/DubboServiceAnnotationService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-
-@Path("/annotation")
-public interface DubboServiceAnnotationService {
-    @GET
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String annotation();
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/ExceptionMapperService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/ExceptionMapperService.java
deleted file mode 100644
index 277693d915..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/ExceptionMapperService.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-
-@Path("/exception/mapper")
-public interface ExceptionMapperService {
-
-    @POST
-    @Path("/exception")
-    String exception(String message);
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/HttpMethodService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/HttpMethodService.java
deleted file mode 100644
index db1a815d46..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/HttpMethodService.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.GET;
-import javax.ws.rs.HEAD;
-import javax.ws.rs.OPTIONS;
-import javax.ws.rs.POST;
-import javax.ws.rs.PUT;
-import javax.ws.rs.Path;
-import javax.ws.rs.QueryParam;
-
-import io.swagger.jaxrs.PATCH;
-
-@Path("/demoService")
-public interface HttpMethodService {
-
-    @POST
-    @Path("/sayPost")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloPost(String hello);
-
-    @DELETE
-    @Path("/sayDelete")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloDelete(@QueryParam("name") String hello);
-
-    @HEAD
-    @Path("/sayHead")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloHead(@QueryParam("name") String hello);
-
-    @GET
-    @Path("/sayGet")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloGet(@QueryParam("name") String hello);
-
-    @PUT
-    @Path("/sayPut")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloPut(@QueryParam("name") String hello);
-
-    @PATCH
-    @Path("/sayPatch")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloPatch(@QueryParam("name") String hello);
-
-    @OPTIONS
-    @Path("/sayOptions")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String sayHelloOptions(@QueryParam("name") String hello);
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/HttpRequestAndResponseRPCContextService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/HttpRequestAndResponseRPCContextService.java
deleted file mode 100644
index 4e925b386d..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/HttpRequestAndResponseRPCContextService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.QueryParam;
-
-import java.util.List;
-
-@Path("/demoService")
-public interface HttpRequestAndResponseRPCContextService {
-
-    @POST
-    @Path("/httpRequestParam")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String httpRequestParam(@QueryParam("name") String hello);
-
-    @POST
-    @Path("/httpRequestHeader")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    String httpRequestHeader(@HeaderParam("header") String hello);
-
-    @POST
-    @Path("/httpResponseHeader")
-    @Consumes({javax.ws.rs.core.MediaType.TEXT_PLAIN})
-    List<String> httpResponseHeader(@HeaderParam("response") String hello);
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/JaxRsRestDemoService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/JaxRsRestDemoService.java
deleted file mode 100644
index 9b61aa5452..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/JaxRsRestDemoService.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import javax.ws.rs.Consumes;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.MultivaluedMap;
-
-import java.util.List;
-import java.util.Map;
-
-import po.User;
-
-/**
- *
- * @Consumers & @Produces can be not used ,we will make sure the content-type of request by arg type
- *  but the Request method  is forbidden disappear
- *  parameters which annotation are not present , it is from the body (jaxrs annotation is different from spring web from param(only request param can  ignore annotation))
- *
- *  Every method only one param from body
- *
- *  the path annotation must present in class & method
- */
-@Path("/jaxrs/demo/service")
-public interface JaxRsRestDemoService {
-    @GET
-    @Path("/hello")
-    Integer hello(@QueryParam("a") Integer a, @QueryParam("b") Integer b);
-
-    @GET
-    @Path("/error")
-    String error();
-
-    @POST
-    @Path("/say")
-    String sayHello(String name);
-
-    @POST
-    @Path("/testFormBody")
-    Long testFormBody(@FormParam("number") Long number);
-
-    @POST
-    @Path("/testJavaBeanBody")
-    @Consumes({MediaType.APPLICATION_JSON})
-    User testJavaBeanBody(User user);
-
-    @GET
-    @Path("/primitive")
-    int primitiveInt(@QueryParam("a") int a, @QueryParam("b") int b);
-
-    @GET
-    @Path("/primitiveLong")
-    long primitiveLong(@QueryParam("a") long a, @QueryParam("b") Long b);
-
-    @GET
-    @Path("/primitiveByte")
-    long primitiveByte(@QueryParam("a") byte a, @QueryParam("b") Long b);
-
-    @POST
-    @Path("/primitiveShort")
-    long primitiveShort(@QueryParam("a") short a, @QueryParam("b") Long b, int c);
-
-    @GET
-    @Path("testMapParam")
-    @Produces({MediaType.TEXT_PLAIN})
-    @Consumes({MediaType.TEXT_PLAIN})
-    String testMapParam(@QueryParam("test") Map<String, String> params);
-
-    @GET
-    @Path("testMapHeader")
-    @Produces({MediaType.TEXT_PLAIN})
-    @Consumes({MediaType.TEXT_PLAIN})
-    String testMapHeader(@HeaderParam("test") Map<String, String> headers);
-
-    @POST
-    @Path("testMapForm")
-    @Produces({MediaType.APPLICATION_JSON})
-    @Consumes({MediaType.APPLICATION_FORM_URLENCODED})
-    List<String> testMapForm(MultivaluedMap<String, String> params);
-
-    @POST
-    @Path("/header")
-    @Consumes({MediaType.TEXT_PLAIN})
-    String header(@HeaderParam("header") String header);
-
-    @POST
-    @Path("/headerInt")
-    @Consumes({MediaType.TEXT_PLAIN})
-    int headerInt(@HeaderParam("header") int header);
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/SpringRestDemoService.java b/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/SpringRestDemoService.java
deleted file mode 100644
index ef726b5e2d..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/org/apache/dubbo/demo/rest/api/SpringRestDemoService.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.http.MediaType;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import po.User;
-
-@RequestMapping("/spring/demo/service")
-public interface SpringRestDemoService {
-
-    @RequestMapping(method = RequestMethod.GET, value = "/hello")
-    Integer hello(@RequestParam("a") Integer a, @RequestParam("b") Integer b);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/error")
-    String error();
-
-    @RequestMapping(method = RequestMethod.POST, value = "/say")
-    String sayHello(@RequestBody String name);
-
-    @RequestMapping(
-            method = RequestMethod.POST,
-            value = "/testFormBody",
-            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-    Long testFormBody(@RequestBody Long number);
-
-    @RequestMapping(
-            method = RequestMethod.POST,
-            value = "/testJavaBeanBody",
-            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-    User testJavaBeanBody(@RequestBody User user);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/primitive")
-    int primitiveInt(@RequestParam("a") int a, @RequestParam("b") int b);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/primitiveLong")
-    long primitiveLong(@RequestParam("a") long a, @RequestParam("b") Long b);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/primitiveByte")
-    long primitiveByte(@RequestParam("a") byte a, @RequestParam("b") Long b);
-
-    @RequestMapping(method = RequestMethod.POST, value = "/primitiveShort")
-    long primitiveShort(@RequestParam("a") short a, @RequestParam("b") Long b, @RequestBody int c);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/testMapParam")
-    String testMapParam(@RequestParam Map<String, String> params);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/testMapHeader")
-    String testMapHeader(@RequestHeader Map<String, String> headers);
-
-    @RequestMapping(
-            method = RequestMethod.POST,
-            value = "/testMapForm",
-            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
-    List<String> testMapForm(MultiValueMap<String, String> params);
-
-    @RequestMapping(method = RequestMethod.GET, value = "/headerInt")
-    int headerInt(@RequestHeader("header") int header);
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/po/TestPO.java b/dubbo-demo/dubbo-demo-interface/src/main/java/po/TestPO.java
deleted file mode 100644
index 29a139f08a..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/po/TestPO.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package po;
-
-public class TestPO {
-    private String name;
-    private String address;
-    private int age;
-
-    public TestPO(String name, String address, int age) {
-        this.name = name;
-        this.address = address;
-        this.age = age;
-    }
-
-    public TestPO() {}
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public void setAddress(String address) {
-        this.address = address;
-    }
-
-    public int getAge() {
-        return age;
-    }
-
-    public void setAge(int age) {
-        this.age = age;
-    }
-
-    public static TestPO getInstance() {
-        return new TestPO("dubbo", "hangzhou", 10);
-    }
-
-    @Override
-    public String toString() {
-        return "TestPO{" + "name='" + name + '\'' + ", address='" + address + '\'' + ", age=" + age + '}';
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-interface/src/main/java/po/User.java b/dubbo-demo/dubbo-demo-interface/src/main/java/po/User.java
deleted file mode 100644
index d5a6326c90..0000000000
--- a/dubbo-demo/dubbo-demo-interface/src/main/java/po/User.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package po;
-
-import java.io.Serializable;
-import java.util.Objects;
-
-public class User implements Serializable {
-
-    private Long id;
-
-    private String name;
-
-    public User() {}
-
-    public User(Long id, String name) {
-        this.id = id;
-        this.name = name;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public static User getInstance() {
-        return new User(1l, "dubbo-rest");
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-        User user = (User) o;
-        return Objects.equals(id, user.id) && Objects.equals(name, user.name);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(id, name);
-    }
-
-    @Override
-    public String toString() {
-        return "User (" + "id=" + id + ", name='" + name + '\'' + ')';
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
deleted file mode 100644
index 42ead1a9ef..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-native</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-native-consumer</artifactId>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-    <curator5_version>5.7.1</curator5_version>
-    <zookeeper_version>3.8.4</zookeeper_version>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-native-interface</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.curator</groupId>
-      <artifactId>curator-x-discovery</artifactId>
-      <version>${curator5_version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.curator</groupId>
-      <artifactId>curator-recipes</artifactId>
-      <version>${curator5_version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.curator</groupId>
-      <artifactId>curator-framework</artifactId>
-      <version>${curator5_version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.zookeeper</groupId>
-      <artifactId>zookeeper</artifactId>
-      <version>${zookeeper_version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty-handler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty-transport-native-epoll</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.curator</groupId>
-          <artifactId>curator-x-discovery</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.zookeeper</groupId>
-          <artifactId>zookeeper</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.curator</groupId>
-          <artifactId>curator-recipes</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.curator</groupId>
-          <artifactId>curator-framework</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-filter-cache</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-filter-validation</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-native</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-core</artifactId>
-      <version>1.5.12</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>native</id>
-      <properties>
-        <profileActive>native</profileActive>
-      </properties>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-maven-plugin</artifactId>
-            <version>${project.version}</version>
-            <configuration>
-              <mainClass>org.apache.dubbo.demo.graalvm.consumer.Application</mainClass>
-            </configuration>
-            <executions>
-              <execution>
-                <goals>
-                  <goal>dubbo-process-aot</goal>
-                </goals>
-                <phase>process-sources</phase>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <version>3.13.0</version>
-            <configuration>
-              <source>1.8</source>
-              <target>1.8</target>
-              <fork>true</fork>
-              <verbose>true</verbose>
-              <encoding>UTF-8</encoding>
-              <compilerArguments>
-                <sourcepath>${project.basedir}${file.separator}src${file.separator}main${file.separator}java</sourcepath>
-              </compilerArguments>
-            </configuration>
-          </plugin>
-          <plugin>
-            <groupId>org.graalvm.buildtools</groupId>
-            <artifactId>native-maven-plugin</artifactId>
-            <version>0.10.3</version>
-            <configuration>
-              <classesDirectory>${project.build.outputDirectory}</classesDirectory>
-              <metadataRepository>
-                <enabled>true</enabled>
-              </metadataRepository>
-              <requiredVersion>22.3</requiredVersion>
-              <mainClass>org.apache.dubbo.demo.graalvm.consumer.Application</mainClass>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-</project>
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/org/apache/dubbo/demo/graalvm/consumer/Application.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/org/apache/dubbo/demo/graalvm/consumer/Application.java
deleted file mode 100644
index 1c9ebb64e5..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/java/org/apache/dubbo/demo/graalvm/consumer/Application.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.graalvm.consumer;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.common.constants.CommonConstants.DubboProperty;
-import org.apache.dubbo.common.utils.SystemPropertyConfigUtils;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.graalvm.demo.DemoService;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Application {
-
-    private static final String REGISTRY_URL = "zookeeper://127.0.0.1:2181";
-
-    public static void main(String[] args) {
-        SystemPropertyConfigUtils.setSystemProperty(DubboProperty.DUBBO_APPLICATION_LOGGER, "logback");
-        System.setProperty("native", "true");
-        SystemPropertyConfigUtils.setSystemProperty(DubboProperty.DUBBO_PREFER_JSON_FRAMEWORK_NAME, "fastjson2");
-        runWithBootstrap();
-    }
-
-    private static void runWithBootstrap() {
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-demo-api-consumer");
-        applicationConfig.setQosEnable(false);
-        applicationConfig.setCompiler("jdk");
-        Map<String, String> m = new HashMap<>(1);
-        m.put("proxy", "jdk");
-        applicationConfig.setParameters(m);
-
-        ReferenceConfig<DemoService> reference = new ReferenceConfig<>();
-        reference.setInterface(DemoService.class);
-        reference.setGeneric("false");
-
-        ProtocolConfig protocolConfig = new ProtocolConfig(CommonConstants.DUBBO, -1);
-        protocolConfig.setSerialization("hessian2");
-        bootstrap
-                .application(applicationConfig)
-                .registry(new RegistryConfig(REGISTRY_URL))
-                .protocol(protocolConfig)
-                .reference(reference)
-                .start();
-
-        DemoService demoService = bootstrap.getCache().get(reference);
-        String message = demoService.sayHello("Native");
-        System.out.println(message);
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/proxy-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/proxy-config.json
deleted file mode 100644
index cb73756e52..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/proxy-config.json
+++ /dev/null
@@ -1,7 +0,0 @@
-[
-  [
-    "org.apache.dubbo.graalvm.demo.DemoService",
-    "org.apache.dubbo.rpc.service.EchoService",
-    "org.apache.dubbo.rpc.service.Destroyable"
-  ]
-]
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json
deleted file mode 100644
index eee360499b..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/META-INF/native-image/reflect-config.json
+++ /dev/null
@@ -1,17 +0,0 @@
-[
-  {
-    "name": "org.apache.zookeeper.ClientCnxnSocketNIO",
-    "methods": [
-      {
-        "name": "<init>",
-        "parameterTypes": [
-          "org.apache.zookeeper.client.ZKClientConfig"
-        ]
-      },
-      {
-        "name": "<init>",
-        "parameterTypes": []
-      }
-    ]
-  }
-]
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/dubbo.properties b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/dubbo.properties
deleted file mode 100644
index 54015d0adf..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/dubbo.properties
+++ /dev/null
@@ -1 +0,0 @@
-native=true
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface/src/main/java/org/apache/dubbo/graalvm/demo/DemoService.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface/src/main/java/org/apache/dubbo/graalvm/demo/DemoService.java
deleted file mode 100644
index 8e338c4bac..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-interface/src/main/java/org/apache/dubbo/graalvm/demo/DemoService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.graalvm.demo;
-
-public interface DemoService {
-
-    String sayHello(String name);
-}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
deleted file mode 100644
index 89179809c1..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
+++ /dev/null
@@ -1,216 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-native</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-native-provider</artifactId>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-    <curator5_version>5.7.1</curator5_version>
-    <zookeeper_version>3.8.4</zookeeper_version>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-native-interface</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.curator</groupId>
-      <artifactId>curator-x-discovery</artifactId>
-      <version>${curator5_version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.curator</groupId>
-      <artifactId>curator-recipes</artifactId>
-      <version>${curator5_version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.curator</groupId>
-      <artifactId>curator-framework</artifactId>
-      <version>${curator5_version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.zookeeper</groupId>
-      <artifactId>zookeeper</artifactId>
-      <version>${zookeeper_version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty-handler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty-transport-native-epoll</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>ch.qos.logback</groupId>
-          <artifactId>logback-core</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.apache.curator</groupId>
-          <artifactId>curator-x-discovery</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.zookeeper</groupId>
-          <artifactId>zookeeper</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.curator</groupId>
-          <artifactId>curator-recipes</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.curator</groupId>
-          <artifactId>curator-framework</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-filter-cache</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-filter-validation</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-native</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-core</artifactId>
-      <version>1.5.12</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <profile>
-      <id>native</id>
-      <properties>
-        <profileActive>native</profileActive>
-      </properties>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.dubbo</groupId>
-            <artifactId>dubbo-maven-plugin</artifactId>
-            <version>${project.version}</version>
-            <configuration>
-              <mainClass>org.apache.dubbo.demo.graalvm.provider.Application</mainClass>
-            </configuration>
-            <executions>
-              <execution>
-                <goals>
-                  <goal>dubbo-process-aot</goal>
-                </goals>
-                <phase>process-sources</phase>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <version>3.13.0</version>
-            <configuration>
-              <source>1.8</source>
-              <target>1.8</target>
-              <fork>true</fork>
-              <verbose>true</verbose>
-              <encoding>UTF-8</encoding>
-              <compilerArguments>
-                <sourcepath>${project.basedir}${file.separator}src${file.separator}main${file.separator}java</sourcepath>
-              </compilerArguments>
-            </configuration>
-          </plugin>
-          <plugin>
-            <groupId>org.graalvm.buildtools</groupId>
-            <artifactId>native-maven-plugin</artifactId>
-            <version>0.10.3</version>
-            <configuration>
-              <classesDirectory>${project.build.outputDirectory}</classesDirectory>
-              <metadataRepository>
-                <enabled>true</enabled>
-              </metadataRepository>
-              <requiredVersion>22.3</requiredVersion>
-              <mainClass>org.apache.dubbo.demo.graalvm.provider.Application</mainClass>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-</project>
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java
deleted file mode 100644
index c0a4e9e4fd..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/Application.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.graalvm.provider;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.common.constants.CommonConstants.DubboProperty;
-import org.apache.dubbo.common.utils.SystemPropertyConfigUtils;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.graalvm.demo.DemoService;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class Application {
-
-    private static final String REGISTRY_URL = "zookeeper://127.0.0.1:2181";
-
-    public static void main(String[] args) throws Exception {
-        SystemPropertyConfigUtils.setSystemProperty(DubboProperty.DUBBO_APPLICATION_LOGGER, "logback");
-        System.setProperty("native", "true");
-        SystemPropertyConfigUtils.setSystemProperty(DubboProperty.DUBBO_PREFER_JSON_FRAMEWORK_NAME, "fastjson2");
-        startWithBootstrap();
-        System.in.read();
-    }
-
-    private static boolean isClassic(String[] args) {
-        return args.length > 0 && "classic".equalsIgnoreCase(args[0]);
-    }
-
-    private static void startWithBootstrap() {
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-
-        ApplicationConfig applicationConfig = new ApplicationConfig("dubbo-demo-api-provider");
-        applicationConfig.setQosEnable(false);
-        applicationConfig.setCompiler("jdk");
-        Map<String, String> m = new HashMap<>(1);
-        m.put("proxy", "jdk");
-        applicationConfig.setParameters(m);
-
-        ServiceConfig<DemoService> service = new ServiceConfig<>();
-        service.setInterface(DemoService.class);
-        service.setRef(new DemoServiceImpl());
-
-        ProtocolConfig protocolConfig = new ProtocolConfig(CommonConstants.DUBBO, -1);
-        protocolConfig.setSerialization("hessian2");
-        bootstrap
-                .application(applicationConfig)
-                .registry(new RegistryConfig(REGISTRY_URL))
-                .protocol(protocolConfig)
-                .service(service)
-                .start()
-                .await();
-
-        System.out.println("dubbo service started");
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java
deleted file mode 100644
index a360f6a5d9..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/java/org/apache/dubbo/demo/graalvm/provider/DemoServiceImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.graalvm.provider;
-
-import org.apache.dubbo.graalvm.demo.DemoService;
-import org.apache.dubbo.rpc.RpcContext;
-
-public class DemoServiceImpl implements DemoService {
-
-    @Override
-    public String sayHello(String name) {
-        System.out.println("Hello " + name + ", request from consumer: "
-                + RpcContext.getContext().getRemoteAddress());
-        return "Hello " + name;
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json
deleted file mode 100644
index a0cb4a8a36..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/reflect-config.json
+++ /dev/null
@@ -1,25 +0,0 @@
-[
-  {
-    "name": "org.apache.dubbo.graalvm.demo.DemoService",
-    "allPublicMethods": true
-  },
-  {
-    "name": "org.apache.dubbo.demo.graalvm.provider.DemoServiceImpl",
-    "allDeclaredMethods": true
-  },
-  {
-    "name": "org.apache.zookeeper.ClientCnxnSocketNIO",
-    "methods": [
-      {
-        "name": "<init>",
-        "parameterTypes": [
-          "org.apache.zookeeper.client.ZKClientConfig"
-        ]
-      },
-      {
-        "name": "<init>",
-        "parameterTypes": []
-      }
-    ]
-  }
-]
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json
deleted file mode 100644
index 6bc4f4cc3b..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/META-INF/native-image/resource-config.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
-  "resources": {
-    "includes": [
-      {
-        "pattern": "\\Qdubbo.properties\\E"
-      },
-      {
-        "pattern": "\\Qlog4j.properties\\E"
-      }
-    ]
-  },
-  "bundles": []
-}
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/dubbo.properties b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/dubbo.properties
deleted file mode 100644
index 54015d0adf..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/dubbo.properties
+++ /dev/null
@@ -1 +0,0 @@
-native=true
diff --git a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-annotation/pom.xml b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/pom.xml
similarity index 73%
rename from dubbo-demo/dubbo-demo-annotation/pom.xml
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/pom.xml
index 8e82740451..2a2b74953a 100644
--- a/dubbo-demo/dubbo-demo-annotation/pom.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/pom.xml
@@ -19,36 +19,32 @@
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo</artifactId>
+    <artifactId>dubbo-demo-spring-boot-idl</artifactId>
     <version>${revision}</version>
   </parent>
-  <artifactId>dubbo-demo-annotation</artifactId>
-  <packaging>pom</packaging>
 
-  <modules>
-    <module>dubbo-demo-annotation-provider</module>
-    <module>dubbo-demo-annotation-consumer</module>
-  </modules>
+  <artifactId>dubbo-demo-spring-boot-idl-consumer</artifactId>
 
   <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <skip_maven_deploy>true</skip_maven_deploy>
-    <spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version>
   </properties>
 
   <build>
     <plugins>
       <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-        <version>${spring-boot-maven-plugin.version}</version>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo-maven-plugin</artifactId>
+        <version>${project.version}</version>
         <executions>
           <execution>
             <goals>
-              <goal>repackage</goal>
+              <goal>compile</goal>
             </goals>
           </execution>
         </executions>
       </plugin>
     </plugins>
   </build>
+
 </project>
diff --git a/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/java/org/apache/dubbo/springboot/idl/demo/consumer/ConsumerApplication.java b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/java/org/apache/dubbo/springboot/idl/demo/consumer/ConsumerApplication.java
new file mode 100644
index 0000000000..f18b1a85ac
--- /dev/null
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/java/org/apache/dubbo/springboot/idl/demo/consumer/ConsumerApplication.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.springboot.idl.demo.consumer;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.apache.dubbo.demo.hello.GreeterService;
+import org.apache.dubbo.demo.hello.HelloReply;
+import org.apache.dubbo.demo.hello.HelloRequest;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Service;
+
+@SpringBootApplication
+@Service
+@EnableDubbo
+public class ConsumerApplication {
+
+    @DubboReference
+    private GreeterService demoService;
+
+    public static void main(String[] args) {
+
+        ConfigurableApplicationContext context = SpringApplication.run(ConsumerApplication.class, args);
+        ConsumerApplication application = context.getBean(ConsumerApplication.class);
+        HelloReply result = application.doSayHello("world");
+        System.out.println("result: " + result.getMessage());
+    }
+
+    public HelloReply doSayHello(String name) {
+        return demoService.sayHello(HelloRequest.newBuilder().setName(name).build());
+    }
+}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/proto/helloworld.proto b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/proto/helloworld.proto
similarity index 73%
copy from dubbo-demo/dubbo-demo-triple/src/main/proto/helloworld.proto
copy to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/proto/helloworld.proto
index 52c3ef756e..8debdd2896 100644
--- a/dubbo-demo/dubbo-demo-triple/src/main/proto/helloworld.proto
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/proto/helloworld.proto
@@ -32,18 +32,4 @@ message HelloReply {
 service GreeterService {
     // Sends a greeting.
     rpc sayHello(HelloRequest) returns (HelloReply);
-
-    /**
-     * Sends a greeting with server streaming.
-     */
-    rpc sayHelloServerStream(HelloRequest) returns (stream HelloReply);
-
-    /**
-     * Sends greetings with bi-directional streaming.
-     */
-    rpc sayHelloBiStream(stream HelloRequest) returns (stream HelloReply);
-}
-service GreeterWrapperService{
-    // Sends a greeting.
-    rpc sayHello(HelloRequest) returns (HelloReply);
 }
diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/resources/application.yml
similarity index 80%
copy from dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
copy to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/resources/application.yml
index b1789be60f..9cbc17d4d8 100644
--- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/resources/application.yml
@@ -16,13 +16,13 @@
 
 spring:
   application:
-    name: dubbo-springboot-demo-provider
+    name: dubbo-springboot-idl-demo-consumer
 
 dubbo:
   application:
     name: ${spring.application.name}
   protocol:
-    name: dubbo
+    name: tri
     port: -1
   registry:
     id: zk-registry
@@ -31,13 +31,5 @@ dubbo:
     address: zookeeper://127.0.0.1:2181
   metadata-report:
     address: zookeeper://127.0.0.1:2181
-  metrics:
-    protocol: prometheus
-    enable-jvm: true
-    enable-registry: true
-    aggregation:
-      enabled: true
-    prometheus:
-      exporter:
-        enabled: true
-    enable-metadata: true
+
+
diff --git a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/resources/log4j2.xml
similarity index 87%
rename from dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/resources/log4j2.xml
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/resources/log4j2.xml
index 69e1321d22..87c6dd5b19 100644
--- a/dubbo-demo/dubbo-demo-annotation/dubbo-demo-annotation-consumer/src/main/resources/log4j2.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-consumer/src/main/resources/log4j2.xml
@@ -18,7 +18,7 @@
 <Configuration status="WARN">
     <Appenders>
         <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
+            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} [%X{traceId}, %X{spanId}] %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
         </Console>
     </Appenders>
     <Loggers>
diff --git a/dubbo-demo/dubbo-demo-native/pom.xml b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/pom.xml
similarity index 68%
rename from dubbo-demo/dubbo-demo-native/pom.xml
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/pom.xml
index 4cf4a6654e..c81d3d8bf9 100644
--- a/dubbo-demo/dubbo-demo-native/pom.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/pom.xml
@@ -16,24 +16,35 @@
   limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
   <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo</artifactId>
+    <artifactId>dubbo-demo-spring-boot-idl</artifactId>
     <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
   </parent>
 
-  <artifactId>dubbo-demo-native</artifactId>
-  <packaging>pom</packaging>
-  <modules>
-    <module>dubbo-demo-native-consumer</module>
-    <module>dubbo-demo-native-provider</module>
-    <module>dubbo-demo-native-interface</module>
-  </modules>
+  <artifactId>dubbo-demo-spring-boot-idl-provider</artifactId>
 
   <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <skip_maven_deploy>true</skip_maven_deploy>
   </properties>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.dubbo</groupId>
+        <artifactId>dubbo-maven-plugin</artifactId>
+        <version>${project.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>compile</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/java/org/apache/dubbo/springboot/idl/demo/provider/GreeterServiceImpl.java
similarity index 58%
rename from dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/java/org/apache/dubbo/springboot/idl/demo/provider/GreeterServiceImpl.java
index 8ec0403c2b..495af515c4 100644
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterServiceImpl.java
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/java/org/apache/dubbo/springboot/idl/demo/provider/GreeterServiceImpl.java
@@ -14,9 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.demo;
+package org.apache.dubbo.springboot.idl.demo.provider;
 
-import org.apache.dubbo.common.stream.StreamObserver;
+import org.apache.dubbo.config.annotation.DubboService;
 import org.apache.dubbo.demo.hello.GreeterService;
 import org.apache.dubbo.demo.hello.HelloReply;
 import org.apache.dubbo.demo.hello.HelloRequest;
@@ -26,6 +26,7 @@ import java.util.concurrent.CompletableFuture;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@DubboService
 public class GreeterServiceImpl implements GreeterService {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(GreeterServiceImpl.class);
@@ -44,39 +45,6 @@ public class GreeterServiceImpl implements GreeterService {
                 HelloReply.newBuilder().setMessage("Hello " + request.getName()).build());
     }
 
-    @Override
-    public void sayHelloServerStream(HelloRequest request, StreamObserver<HelloReply> responseObserver) {
-        LOGGER.info("Received sayHelloServerStream request");
-        for (int i = 1; i < 6; i++) {
-            LOGGER.info("sayHelloServerStream onNext: {} {} times", request.getName(), i);
-            responseObserver.onNext(toReply("Hello " + request.getName() + ' ' + i + " times"));
-        }
-        LOGGER.info("sayHelloServerStream onCompleted");
-        responseObserver.onCompleted();
-    }
-
-    @Override
-    public StreamObserver<HelloRequest> sayHelloBiStream(StreamObserver<HelloReply> responseObserver) {
-        LOGGER.info("Received sayHelloBiStream request");
-        return new StreamObserver<HelloRequest>() {
-            @Override
-            public void onNext(HelloRequest request) {
-                LOGGER.info("sayHelloBiStream onNext: {}", request.getName());
-                responseObserver.onNext(toReply("Hello " + request.getName()));
-            }
-
-            @Override
-            public void onError(Throwable throwable) {
-                LOGGER.error("sayHelloBiStream onError", throwable);
-            }
-
-            @Override
-            public void onCompleted() {
-                LOGGER.info("sayHelloBiStream onCompleted");
-            }
-        };
-    }
-
     private static HelloReply toReply(String message) {
         return HelloReply.newBuilder().setMessage(message).build();
     }
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/SpringMvcRestProvider.java b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/java/org/apache/dubbo/springboot/idl/demo/provider/ProviderApplication.java
similarity index 62%
rename from dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/SpringMvcRestProvider.java
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/java/org/apache/dubbo/springboot/idl/demo/provider/ProviderApplication.java
index 81bc102481..488c22be38 100644
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/SpringMvcRestProvider.java
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/java/org/apache/dubbo/springboot/idl/demo/provider/ProviderApplication.java
@@ -14,20 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.dubbo.demo.rest.api;
+package org.apache.dubbo.springboot.idl.demo.provider;
 
-import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 
-public class SpringMvcRestProvider {
+import java.util.concurrent.CountDownLatch;
 
-    public static void main(String[] args) throws Exception {
-        ClassPathXmlApplicationContext context =
-                new ClassPathXmlApplicationContext(new String[] {"spring/rest-provider.xml"});
-
-        context.refresh();
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
 
-        System.out.println("spring mvc rest provider started");
-
-        System.in.read();
+@SpringBootApplication
+@EnableDubbo
+public class ProviderApplication {
+    public static void main(String[] args) throws Exception {
+        SpringApplication.run(ProviderApplication.class, args);
+        System.out.println("dubbo service started");
+        new CountDownLatch(1).await();
     }
 }
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/proto/helloworld.proto b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/proto/helloworld.proto
similarity index 73%
rename from dubbo-demo/dubbo-demo-triple/src/main/proto/helloworld.proto
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/proto/helloworld.proto
index 52c3ef756e..8debdd2896 100644
--- a/dubbo-demo/dubbo-demo-triple/src/main/proto/helloworld.proto
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/proto/helloworld.proto
@@ -32,18 +32,4 @@ message HelloReply {
 service GreeterService {
     // Sends a greeting.
     rpc sayHello(HelloRequest) returns (HelloReply);
-
-    /**
-     * Sends a greeting with server streaming.
-     */
-    rpc sayHelloServerStream(HelloRequest) returns (stream HelloReply);
-
-    /**
-     * Sends greetings with bi-directional streaming.
-     */
-    rpc sayHelloBiStream(stream HelloRequest) returns (stream HelloReply);
-}
-service GreeterWrapperService{
-    // Sends a greeting.
-    rpc sayHello(HelloRequest) returns (HelloReply);
 }
diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/resources/application.yml
similarity index 80%
copy from dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
copy to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/resources/application.yml
index b1789be60f..88c5c29c48 100644
--- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/resources/application.yml
@@ -16,13 +16,13 @@
 
 spring:
   application:
-    name: dubbo-springboot-demo-provider
+    name: dubbo-springboot-idl-demo-provider
 
 dubbo:
   application:
     name: ${spring.application.name}
   protocol:
-    name: dubbo
+    name: tri
     port: -1
   registry:
     id: zk-registry
@@ -31,13 +31,3 @@ dubbo:
     address: zookeeper://127.0.0.1:2181
   metadata-report:
     address: zookeeper://127.0.0.1:2181
-  metrics:
-    protocol: prometheus
-    enable-jvm: true
-    enable-registry: true
-    aggregation:
-      enabled: true
-    prometheus:
-      exporter:
-        enabled: true
-    enable-metadata: true
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/resources/log4j2.xml
similarity index 100%
rename from dubbo-demo/dubbo-demo-triple/src/main/resources/log4j2.xml
rename to dubbo-demo/dubbo-demo-spring-boot-idl/dubbo-demo-spring-boot-idl-provider/src/main/resources/log4j2.xml
diff --git a/dubbo-demo/dubbo-demo-triple/pom.xml b/dubbo-demo/dubbo-demo-spring-boot-idl/pom.xml
similarity index 90%
rename from dubbo-demo/dubbo-demo-triple/pom.xml
rename to dubbo-demo/dubbo-demo-spring-boot-idl/pom.xml
index 8fa55a99fb..12de69c906 100644
--- a/dubbo-demo/dubbo-demo-triple/pom.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot-idl/pom.xml
@@ -24,16 +24,30 @@
     <relativePath>../pom.xml</relativePath>
   </parent>
 
-  <artifactId>dubbo-demo-triple</artifactId>
+  <artifactId>dubbo-demo-spring-boot-idl</artifactId>
+  <packaging>pom</packaging>
+  <modules>
+    <module>dubbo-demo-spring-boot-idl-provider</module>
+    <module>dubbo-demo-spring-boot-idl-consumer</module>
+  </modules>
 
   <properties>
     <skip_maven_deploy>true</skip_maven_deploy>
-    <source.level>1.8</source.level>
-    <target.level>1.8</target.level>
+    <spring-boot.version>2.7.18</spring-boot.version>
     <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
   </properties>
 
   <dependencies>
+    <dependency>
+      <groupId>org.apache.dubbo</groupId>
+      <artifactId>dubbo-spring-boot-starter</artifactId>
+      <version>${revision}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter</artifactId>
+      <version>${spring-boot.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-filter-cache</artifactId>
@@ -157,18 +171,7 @@
           </execution>
         </executions>
       </plugin>
-      <plugin>
-        <groupId>org.apache.dubbo</groupId>
-        <artifactId>dubbo-maven-plugin</artifactId>
-        <version>${project.version}</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
+
       <!-- Override the maven-javadoc-plugin configuration that depends on the pass -->
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
index b1789be60f..f154d3967b 100644
--- a/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
+++ b/dubbo-demo/dubbo-demo-spring-boot/dubbo-demo-spring-boot-provider/src/main/resources/application.yml
@@ -22,7 +22,7 @@ dubbo:
   application:
     name: ${spring.application.name}
   protocol:
-    name: dubbo
+    name: tri
     port: -1
   registry:
     id: zk-registry
diff --git a/dubbo-demo/dubbo-demo-spring-boot/pom.xml b/dubbo-demo/dubbo-demo-spring-boot/pom.xml
index 5094305c81..f26e2cd2c8 100644
--- a/dubbo-demo/dubbo-demo-spring-boot/pom.xml
+++ b/dubbo-demo/dubbo-demo-spring-boot/pom.xml
@@ -33,6 +33,8 @@
   </modules>
 
   <properties>
+    <source.level>1.8</source.level>
+    <target.level>1.8</target.level>
     <skip_maven_deploy>true</skip_maven_deploy>
     <spring-boot.version>2.7.18</spring-boot.version>
     <spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version>
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java
deleted file mode 100644
index e9210d2592..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterService.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo;
-
-import org.apache.dubbo.common.stream.StreamObserver;
-import org.apache.dubbo.demo.hello.HelloReply;
-import org.apache.dubbo.demo.hello.HelloRequest;
-
-import java.util.concurrent.CompletableFuture;
-
-public interface GreeterService {
-
-    /**
-     * Sends a greeting
-     */
-    HelloReply sayHello(HelloRequest request);
-
-    /**
-     * Sends a greeting asynchronously
-     */
-    CompletableFuture<String> sayHelloAsync(String request);
-
-    /**
-     * Sends a greeting with server streaming
-     */
-    void sayHelloServerStream(HelloRequest request, StreamObserver<HelloReply> responseObserver);
-
-    /**
-     * Sends greetings with bi streaming
-     */
-    StreamObserver<HelloRequest> sayHelloBiStream(StreamObserver<HelloReply> responseObserver);
-}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterWrapperService.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterWrapperService.java
deleted file mode 100644
index bb90d4c54f..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterWrapperService.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo;
-
-public interface GreeterWrapperService {
-
-    /**
-     * Sends a greeting
-     */
-    String sayHello(String request);
-}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterWrapperServiceImpl.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterWrapperServiceImpl.java
deleted file mode 100644
index 9af186a219..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/GreeterWrapperServiceImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo;
-
-import org.apache.dubbo.demo.hello.GreeterWrapperService;
-import org.apache.dubbo.demo.hello.HelloReply;
-import org.apache.dubbo.demo.hello.HelloRequest;
-
-import java.util.concurrent.CompletableFuture;
-
-public class GreeterWrapperServiceImpl implements GreeterWrapperService {
-
-    @Override
-    public HelloReply sayHello(HelloRequest request) {
-        StringBuilder responseBuilder = new StringBuilder(request.getName());
-        for (int i = 0; i < 20; i++) {
-            responseBuilder.append(responseBuilder);
-        }
-        return HelloReply.newBuilder().setMessage(responseBuilder.toString()).build();
-    }
-
-    @Override
-    public CompletableFuture<HelloReply> sayHelloAsync(HelloRequest request) {
-        return CompletableFuture.supplyAsync(() -> {
-            StringBuilder responseBuilder = new StringBuilder(request.getName());
-            for (int i = 0; i < 20; i++) {
-                responseBuilder.append(responseBuilder);
-            }
-            return HelloReply.newBuilder()
-                    .setMessage(responseBuilder.toString())
-                    .build();
-        });
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java
deleted file mode 100644
index 0ad003b5ce..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiConsumer.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.consumer;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.common.stream.StreamObserver;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.demo.hello.GreeterService;
-import org.apache.dubbo.demo.hello.HelloReply;
-import org.apache.dubbo.demo.hello.HelloRequest;
-import org.apache.dubbo.rpc.Constants;
-
-import java.util.Collections;
-import java.util.concurrent.CompletableFuture;
-
-public class ApiConsumer {
-
-    public static void main(String[] args) throws InterruptedException {
-        ReferenceConfig<GreeterService> referenceConfig = new ReferenceConfig<>();
-        referenceConfig.setInterface(GreeterService.class);
-        referenceConfig.setCheck(false);
-        referenceConfig.setProtocol(CommonConstants.TRIPLE);
-        referenceConfig.setLazy(true);
-        referenceConfig.setTimeout(100000);
-        if (args.length > 0 && Constants.HTTP3_KEY.equals(args[0])) {
-            referenceConfig.setParameters(Collections.singletonMap(Constants.HTTP3_KEY, "true"));
-        }
-
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-        bootstrap
-                .application(new ApplicationConfig("dubbo-demo-triple-api-consumer"))
-                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
-                .protocol(new ProtocolConfig(CommonConstants.TRIPLE, -1))
-                .reference(referenceConfig)
-                .start();
-
-        GreeterService greeterService = referenceConfig.get();
-        System.out.println("dubbo referenceConfig started");
-        try {
-            System.out.println("Call sayHello");
-            HelloReply reply = greeterService.sayHello(buildRequest("triple"));
-            System.out.println("sayHello reply: " + reply.getMessage());
-
-            System.out.println("Call sayHelloAsync");
-            CompletableFuture<HelloReply> sayHelloAsync = greeterService.sayHelloAsync(
-                    HelloRequest.newBuilder().setName("triple").build());
-            sayHelloAsync.thenAccept(value -> System.out.println("sayHelloAsync reply: " + value));
-
-            StreamObserver<HelloReply> responseObserver = new StreamObserver<HelloReply>() {
-                @Override
-                public void onNext(HelloReply reply) {
-                    System.out.println("sayHelloServerStream onNext: " + reply.getMessage());
-                }
-
-                @Override
-                public void onError(Throwable t) {
-                    System.out.println("sayHelloServerStream onError: " + t.getMessage());
-                }
-
-                @Override
-                public void onCompleted() {
-                    System.out.println("sayHelloServerStream onCompleted");
-                }
-            };
-            System.out.println("Call sayHelloServerStream");
-            greeterService.sayHelloServerStream(buildRequest("triple"), responseObserver);
-
-            StreamObserver<HelloReply> biResponseObserver = new StreamObserver<HelloReply>() {
-                @Override
-                public void onNext(HelloReply reply) {
-                    System.out.println("biRequestObserver onNext: " + reply.getMessage());
-                }
-
-                @Override
-                public void onError(Throwable t) {
-                    System.out.println("biResponseObserver onError: " + t.getMessage());
-                }
-
-                @Override
-                public void onCompleted() {
-                    System.out.println("biResponseObserver onCompleted");
-                }
-            };
-            System.out.println("Call biRequestObserver");
-            StreamObserver<HelloRequest> biRequestObserver = greeterService.sayHelloBiStream(biResponseObserver);
-            for (int i = 0; i < 5; i++) {
-                biRequestObserver.onNext(buildRequest("triple" + i));
-            }
-            biRequestObserver.onCompleted();
-        } catch (Throwable t) {
-            //noinspection CallToPrintStackTrace
-            t.printStackTrace();
-        }
-        Thread.sleep(2000);
-    }
-
-    private static HelloRequest buildRequest(String name) {
-        return HelloRequest.newBuilder().setName(name).build();
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiWrapperConsumer.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiWrapperConsumer.java
deleted file mode 100644
index 387f5137d1..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/consumer/ApiWrapperConsumer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.consumer;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.ReferenceConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.demo.hello.GreeterWrapperService;
-import org.apache.dubbo.demo.hello.HelloReply;
-import org.apache.dubbo.demo.hello.HelloRequest;
-import org.apache.dubbo.rpc.Constants;
-
-import java.io.IOException;
-import java.util.Collections;
-
-public class ApiWrapperConsumer {
-    public static void main(String[] args) throws IOException {
-        ReferenceConfig<GreeterWrapperService> referenceConfig = new ReferenceConfig<>();
-        referenceConfig.setInterface(GreeterWrapperService.class);
-        referenceConfig.setCheck(false);
-        referenceConfig.setProtocol("tri");
-        referenceConfig.setLazy(true);
-        if (args.length > 0 && Constants.HTTP3_KEY.equals(args[0])) {
-            referenceConfig.setParameters(Collections.singletonMap(Constants.HTTP3_KEY, "true"));
-        }
-
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-        bootstrap
-                .application(new ApplicationConfig("dubbo-demo-triple-api-wrapper-consumer"))
-                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
-                .protocol(new ProtocolConfig(CommonConstants.TRIPLE, -1))
-                .reference(referenceConfig)
-                .start();
-
-        final GreeterWrapperService greeterWrapperService = referenceConfig.get();
-        System.out.println("dubbo referenceConfig started");
-        long st = System.currentTimeMillis();
-        HelloReply reply = greeterWrapperService.sayHello(
-                HelloRequest.newBuilder().setName("haha").build());
-        // 4MB response
-        System.out.println("Reply Message:" + reply.getMessage() + " cost:" + (System.currentTimeMillis() - st));
-        System.in.read();
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/provider/ApiProvider.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/provider/ApiProvider.java
deleted file mode 100644
index 468319c088..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/provider/ApiProvider.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.demo.GreeterServiceImpl;
-import org.apache.dubbo.demo.hello.GreeterService;
-import org.apache.dubbo.rpc.Constants;
-
-import java.util.Collections;
-
-public class ApiProvider {
-    public static void main(String[] args) {
-        ServiceConfig<GreeterService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(GreeterService.class);
-        serviceConfig.setRef(new GreeterServiceImpl());
-        if (args.length > 0 && Constants.HTTP3_KEY.equals(args[0])) {
-            serviceConfig.setParameters(Collections.singletonMap(Constants.HTTP3_KEY, "true"));
-        }
-
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-        bootstrap
-                .application(new ApplicationConfig("dubbo-demo-triple-api-provider"))
-                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
-                .protocol(new ProtocolConfig(CommonConstants.TRIPLE, -1))
-                .service(serviceConfig)
-                .start()
-                .await();
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/provider/ApiWrapperProvider.java b/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/provider/ApiWrapperProvider.java
deleted file mode 100644
index faeb49c376..0000000000
--- a/dubbo-demo/dubbo-demo-triple/src/main/java/org/apache/dubbo/demo/provider/ApiWrapperProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.common.constants.CommonConstants;
-import org.apache.dubbo.config.ApplicationConfig;
-import org.apache.dubbo.config.ProtocolConfig;
-import org.apache.dubbo.config.RegistryConfig;
-import org.apache.dubbo.config.ServiceConfig;
-import org.apache.dubbo.config.bootstrap.DubboBootstrap;
-import org.apache.dubbo.demo.GreeterWrapperServiceImpl;
-import org.apache.dubbo.demo.hello.GreeterWrapperService;
-import org.apache.dubbo.rpc.Constants;
-
-import java.io.IOException;
-import java.util.Collections;
-
-public class ApiWrapperProvider {
-    public static void main(String[] args) throws IOException {
-        ServiceConfig<GreeterWrapperService> serviceConfig = new ServiceConfig<>();
-        serviceConfig.setInterface(GreeterWrapperService.class);
-        serviceConfig.setRef(new GreeterWrapperServiceImpl());
-        if (args.length > 0 && Constants.HTTP3_KEY.equals(args[0])) {
-            serviceConfig.setParameters(Collections.singletonMap(Constants.HTTP3_KEY, "true"));
-        }
-
-        DubboBootstrap bootstrap = DubboBootstrap.getInstance();
-        bootstrap
-                .application(new ApplicationConfig("dubbo-demo-triple-api-wrapper-provider"))
-                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
-                .protocol(new ProtocolConfig(CommonConstants.TRIPLE, -1))
-                .service(serviceConfig)
-                .start()
-                .await();
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/pom.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/pom.xml
deleted file mode 100644
index 46cafa0047..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/pom.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-xml</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-spring-mvc-rest-consumer</artifactId>
-
-  <packaging>jar</packaging>
-  <name>${project.artifactId}</name>
-  <description>Dubbo Spring MVC  Rest Consumer Demo</description>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-web</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-spring</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <!-- For jdk 11 above JavaEE annotation -->
-    <profile>
-      <id>javax.annotation</id>
-      <activation>
-        <jdk>[1.11,)</jdk>
-      </activation>
-      <dependencies>
-        <dependency>
-          <groupId>javax.annotation</groupId>
-          <artifactId>javax.annotation-api</artifactId>
-          <version>1.3.2</version>
-        </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/SpringMvcRestConsumer.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/SpringMvcRestConsumer.java
deleted file mode 100644
index e64117cce0..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/SpringMvcRestConsumer.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api;
-
-import java.util.Arrays;
-
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import po.User;
-
-public class SpringMvcRestConsumer {
-
-    public static void main(String[] args) {
-        consumerService();
-    }
-
-    public static void consumerService() {
-        ClassPathXmlApplicationContext context =
-                new ClassPathXmlApplicationContext(new String[] {"spring/rest-consumer.xml"});
-        context.start();
-        System.out.println("spring mvc rest consumer start");
-        springMvcRestDemoServiceTest(context);
-        System.out.println("spring mvc rest consumer test success");
-    }
-
-    private static void springMvcRestDemoServiceTest(ClassPathXmlApplicationContext context) {
-        SpringRestDemoService springRestDemoService =
-                context.getBean("springRestDemoService", SpringRestDemoService.class);
-        String hello = springRestDemoService.sayHello("hello");
-        assertEquals("Hello, hello", hello);
-        Integer result = springRestDemoService.primitiveInt(1, 2);
-        Long resultLong = springRestDemoService.primitiveLong(1, 2l);
-        long resultByte = springRestDemoService.primitiveByte((byte) 1, 2l);
-        long resultShort = springRestDemoService.primitiveShort((short) 1, 2l, 1);
-
-        assertEquals(result, 3);
-        assertEquals(resultShort, 3l);
-        assertEquals(resultLong, 3l);
-        assertEquals(resultByte, 3l);
-
-        assertEquals(Long.valueOf(1l), springRestDemoService.testFormBody(1l));
-
-        MultiValueMap<String, String> forms = new LinkedMultiValueMap<>();
-        forms.put("form", Arrays.asList("F1"));
-
-        assertEquals(Arrays.asList("F1"), springRestDemoService.testMapForm(forms));
-        assertEquals(User.getInstance(), springRestDemoService.testJavaBeanBody(User.getInstance()));
-    }
-
-    private static void assertEquals(Object returnStr, Object exception) {
-        boolean equal = returnStr != null && returnStr.equals(exception);
-
-        if (equal) {
-            return;
-        } else {
-            throw new RuntimeException();
-        }
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/config/DubboConfig.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/config/DubboConfig.java
deleted file mode 100644
index 0d9eab4ecb..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/config/DubboConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api.config;
-
-import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
-
-@DubboComponentScan("org.apache.dubbo.demo.rest")
-public class DubboConfig {}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/consumer/SpringRestDemoServiceConsumer.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/consumer/SpringRestDemoServiceConsumer.java
deleted file mode 100644
index fbedf5decd..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/java/org/apache/dubbo/demo/rest/api/consumer/SpringRestDemoServiceConsumer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api.consumer;
-
-import org.apache.dubbo.config.annotation.DubboReference;
-import org.apache.dubbo.demo.rest.api.SpringRestDemoService;
-
-import org.springframework.stereotype.Component;
-
-@Component
-public class SpringRestDemoServiceConsumer {
-    @DubboReference(interfaceClass = SpringRestDemoService.class)
-    SpringRestDemoService springRestDemoService;
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/resources/spring/rest-consumer.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/resources/spring/rest-consumer.xml
deleted file mode 100644
index b028879160..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-consumer/src/main/resources/spring/rest-consumer.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-       xmlns="http://www.springframework.org/schema/beans"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
-       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context
-       http://www.springframework.org/schema/context/spring-context.xsd">
-
-    <context:component-scan base-package="org.apache.dubbo.demo.rest"/>
-
-    <dubbo:application name="rest-consumer" owner="programmer" organization="dubbo"/>
-
-    <bean name="dubboConfig" class="org.apache.dubbo.demo.rest.api.config.DubboConfig"></bean>
-
-    <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
-
-
-
-</beans>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/pom.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/pom.xml
deleted file mode 100644
index aba2a7387a..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/pom.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-xml</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-spring-mvc-rest-provider</artifactId>
-
-  <packaging>jar</packaging>
-  <name>${project.artifactId}</name>
-  <description>Dubbo Spring MVC  Rest Provider Demo</description>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-web</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-spring</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-
-  <profiles>
-    <!-- For jdk 11 above JavaEE annotation -->
-    <profile>
-      <id>javax.annotation</id>
-      <activation>
-        <jdk>[1.11,)</jdk>
-      </activation>
-      <dependencies>
-        <dependency>
-          <groupId>javax.annotation</groupId>
-          <artifactId>javax.annotation-api</artifactId>
-          <version>1.3.2</version>
-        </dependency>
-      </dependencies>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/config/DubboConfig.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/config/DubboConfig.java
deleted file mode 100644
index 0d9eab4ecb..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/config/DubboConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api.config;
-
-import org.apache.dubbo.config.spring.context.annotation.DubboComponentScan;
-
-@DubboComponentScan("org.apache.dubbo.demo.rest")
-public class DubboConfig {}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/impl/SpringRestDemoServiceImpl.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/impl/SpringRestDemoServiceImpl.java
deleted file mode 100644
index 6cdaede32f..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/java/org/apache/dubbo/demo/rest/api/impl/SpringRestDemoServiceImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.rest.api.impl;
-
-import org.apache.dubbo.config.annotation.DubboService;
-import org.apache.dubbo.demo.rest.api.SpringRestDemoService;
-
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.util.MultiValueMap;
-import po.User;
-
-@DubboService(interfaceClass = SpringRestDemoService.class, protocol = "rest")
-public class SpringRestDemoServiceImpl implements SpringRestDemoService {
-
-    @Override
-    public String sayHello(String name) {
-        return "Hello, " + name;
-    }
-
-    @Override
-    public Long testFormBody(Long number) {
-        return number;
-    }
-
-    @Override
-    public User testJavaBeanBody(User user) {
-        return user;
-    }
-
-    @Override
-    public int primitiveInt(int a, int b) {
-        return a + b;
-    }
-
-    @Override
-    public long primitiveLong(long a, Long b) {
-        return a + b;
-    }
-
-    @Override
-    public long primitiveByte(byte a, Long b) {
-        return a + b;
-    }
-
-    @Override
-    public long primitiveShort(short a, Long b, int c) {
-        return a + b;
-    }
-
-    @Override
-    public String testMapParam(Map<String, String> params) {
-        return params.get("param");
-    }
-
-    @Override
-    public String testMapHeader(Map<String, String> headers) {
-        return headers.get("header");
-    }
-
-    @Override
-    public List<String> testMapForm(MultiValueMap<String, String> params) {
-        return params.get("form");
-    }
-
-    @Override
-    public int headerInt(int header) {
-        return header;
-    }
-
-    @Override
-    public Integer hello(Integer a, Integer b) {
-        return a + b;
-    }
-
-    @Override
-    public String error() {
-        throw new RuntimeException("test error");
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/resources/spring/rest-provider.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/resources/spring/rest-provider.xml
deleted file mode 100644
index 8c6be976f7..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-spring-mvc-rest-provider/src/main/resources/spring/rest-provider.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-
-<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-       xmlns="http://www.springframework.org/schema/beans"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
-       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context
-       http://www.springframework.org/schema/context/spring-context.xsd">
-
-    <context:component-scan base-package="org.apache.dubbo.demo.rest"/>
-
-    <bean name="dubboConfig" class="org.apache.dubbo.demo.rest.api.config.DubboConfig"></bean>
-
-    <dubbo:application name="rest-provider" owner="programmer" organization="dubbo"/>
-
-    <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
-
-    <dubbo:protocol name="rest" port="8888" threads="500" contextpath="services"/>
-
-
-</beans>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml
deleted file mode 100644
index cbd5e6d60c..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-xml</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-  <artifactId>dubbo-demo-xml-consumer</artifactId>
-  <packaging>jar</packaging>
-  <name>${project.artifactId}</name>
-  <description>The demo consumer module of dubbo project</description>
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-spring</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-triple</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
deleted file mode 100644
index 2960b8d50e..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/java/org/apache/dubbo/demo/consumer/Application.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.consumer;
-
-import org.apache.dubbo.demo.DemoService;
-import org.apache.dubbo.demo.GreetingService;
-import org.apache.dubbo.demo.RestDemoService;
-import org.apache.dubbo.demo.TripleService;
-
-import javax.ws.rs.core.MultivaluedHashMap;
-import javax.ws.rs.core.MultivaluedMap;
-
-import java.util.Arrays;
-import java.util.concurrent.CompletableFuture;
-
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-import po.TestPO;
-
-public class Application {
-    /**
-     * In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before
-     * launch the application
-     */
-    public static void main(String[] args) throws Exception {
-        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/dubbo-consumer.xml");
-        context.start();
-        DemoService demoService = context.getBean("demoService", DemoService.class);
-        GreetingService greetingService = context.getBean("greetingService", GreetingService.class);
-        RestDemoService restDemoService = context.getBean("restDemoService", RestDemoService.class);
-        TripleService tripleService = context.getBean("tripleService", TripleService.class);
-
-        new Thread(() -> {
-                    while (true) {
-                        try {
-                            String greetings = greetingService.hello();
-                            System.out.println(greetings + " from separated thread.");
-                        } catch (Exception e) {
-                            //                    e.printStackTrace();
-                        }
-                        try {
-                            Thread.sleep(1000);
-                        } catch (InterruptedException e) {
-                        }
-                    }
-                })
-                .start();
-
-        new Thread(() -> {
-                    while (true) {
-                        try {
-                            Object restResult = restDemoService.sayHello("rest");
-                            System.out.println(restResult + " from separated thread.");
-                            restResult = restDemoService.testBody5(TestPO.getInstance());
-                            System.out.println(restResult + " from separated thread.");
-
-                            restResult = restDemoService.hello(1, 2);
-                            System.out.println(restResult + " from separated thread.");
-
-                            String form1 = restDemoService.testForm1("form1");
-                            System.out.println(form1);
-
-                            MultivaluedHashMap multivaluedHashMap = new MultivaluedHashMap();
-                            multivaluedHashMap.put("1", Arrays.asList("1"));
-                            multivaluedHashMap.put("2", Arrays.asList("2"));
-                            MultivaluedMap form2 = restDemoService.testForm2(multivaluedHashMap);
-                            System.out.println(form2);
-                        } catch (Exception e) {
-                            e.printStackTrace();
-                        }
-                        try {
-                            Thread.sleep(1000);
-                        } catch (InterruptedException e) {
-                        }
-                    }
-                })
-                .start();
-
-        while (true) {
-            try {
-                CompletableFuture<String> hello = demoService.sayHelloAsync("world");
-                System.out.println("result: " + hello.get());
-
-                String greetings = greetingService.hello();
-                System.out.println("result: " + greetings);
-            } catch (Exception e) {
-                //                e.printStackTrace();
-            }
-
-            Thread.sleep(5000);
-        }
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/dubbo-migration.yaml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/dubbo-migration.yaml
deleted file mode 100644
index 3f55a0bf36..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/dubbo-migration.yaml
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-#
-#   Licensed to the Apache Software Foundation (ASF) under one or more
-#   contributor license agreements.  See the NOTICE file distributed with
-#   this work for additional information regarding copyright ownership.
-#   The ASF licenses this file to You under the Apache License, Version 2.0
-#   (the "License"); you may not use this file except in compliance with
-#   the License.  You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#
-#
-
-key: demo-consumer
-step: APPLICATION_FIRST
-threshold: 0.1
\ No newline at end of file
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/dubbo.properties b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/dubbo.properties
deleted file mode 100644
index 8c3cb2559c..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/dubbo.properties
+++ /dev/null
@@ -1 +0,0 @@
-dubbo.application.qos.port=33333
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
deleted file mode 100644
index 0767baf39a..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-consumer/src/main/resources/spring/dubbo-consumer.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-       xmlns="http://www.springframework.org/schema/beans"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
-       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
-
-    <dubbo:application name="demo-consumer">
-    </dubbo:application>
-
-    <dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>
-
-    <dubbo:registry id="demo1" address="zookeeper://127.0.0.1:2181?registry-type=service"/>
-
-    <dubbo:reference id="demoService" check="false"
-                     interface="org.apache.dubbo.demo.DemoService"/>
-
-    <dubbo:reference version="1.0.0" group="greeting" id="greetingService" check="false"
-                     interface="org.apache.dubbo.demo.GreetingService"/>
-
-    <dubbo:reference version="1.0.0" id="restDemoService" check="false"
-                     interface="org.apache.dubbo.demo.RestDemoService"/>
-
-    <dubbo:reference version="1.0.0" id="tripleService" check="false"
-                     interface="org.apache.dubbo.demo.TripleService"/>
-
-</beans>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml
deleted file mode 100644
index 2869a1dbff..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/pom.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo-xml</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-  <artifactId>dubbo-demo-xml-provider</artifactId>
-  <packaging>jar</packaging>
-  <name>${project.artifactId}</name>
-  <description>The demo provider module of dubbo project</description>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-demo-interface</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-multicast</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-registry-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.alibaba.nacos</groupId>
-      <artifactId>nacos-client</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-configcenter-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-zookeeper</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-metadata-report-nacos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-dubbo</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-config-spring</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-netty4</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-hessian2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-serialization-fastjson2</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-triple</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-qos</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
deleted file mode 100644
index d1ab5be748..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/Application.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.springframework.context.support.ClassPathXmlApplicationContext;
-
-public class Application {
-    public static void main(String[] args) throws Exception {
-        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/dubbo-provider.xml");
-        context.start();
-        System.in.read();
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
deleted file mode 100644
index 3467051454..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/DemoServiceImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.demo.DemoService;
-import org.apache.dubbo.rpc.RpcContext;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DemoServiceImpl implements DemoService {
-    private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
-
-    @Override
-    public String sayHello(String name) {
-        logger.info("Hello " + name + ", request from consumer: "
-                + RpcContext.getServiceContext().getRemoteAddress());
-        try {
-            Thread.sleep(1000);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        return "Hello " + name + ", response from provider: "
-                + RpcContext.getServiceContext().getLocalAddress();
-    }
-
-    @Override
-    public CompletableFuture<String> sayHelloAsync(String name) {
-        CompletableFuture<String> cf = CompletableFuture.supplyAsync(() -> {
-            //            try {
-            //                Thread.sleep(1000);
-            //            } catch (InterruptedException e) {
-            //                e.printStackTrace();
-            //            }
-            return "async result";
-        });
-        return cf;
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/GreetingServiceImpl.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/GreetingServiceImpl.java
deleted file mode 100644
index cc1b5de413..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/GreetingServiceImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.demo.GreetingService;
-
-/**
- *
- */
-public class GreetingServiceImpl implements GreetingService {
-    @Override
-    public String hello() {
-        return "Greetings!";
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/RestDemoServiceImpl.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/RestDemoServiceImpl.java
deleted file mode 100644
index 37155fa436..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/RestDemoServiceImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.demo.RestDemoService;
-import org.apache.dubbo.rpc.RpcContext;
-
-import javax.ws.rs.core.MultivaluedMap;
-
-import java.util.Map;
-
-import po.TestPO;
-
-public class RestDemoServiceImpl implements RestDemoService {
-    private static Map<String, Object> context;
-    private boolean called;
-
-    public String sayHello(String name) {
-        called = true;
-        return "Hello, " + name;
-    }
-
-    public boolean isCalled() {
-        return called;
-    }
-
-    @Override
-    public Integer hello(Integer a, Integer b) {
-        context = RpcContext.getServerAttachment().getObjectAttachments();
-        return a + b;
-    }
-
-    @Override
-    public String error() {
-        throw new RuntimeException();
-    }
-
-    public static Map<String, Object> getAttachments() {
-        return context;
-    }
-
-    @Override
-    public String getRemoteApplicationName() {
-        return RpcContext.getServiceContext().getRemoteApplicationName();
-    }
-
-    @Override
-    public Integer testBody(Integer b) {
-        return b;
-    }
-
-    @Override
-    public String testBody2(String b) {
-        return b;
-    }
-
-    @Override
-    public Boolean testBody2(Boolean b) {
-        return b;
-    }
-
-    @Override
-    public TestPO testBody2(TestPO b) {
-        return b;
-    }
-
-    @Override
-    public TestPO testBody5(TestPO testPO) {
-        return testPO;
-    }
-
-    public String testForm1(String test) {
-        return test;
-    }
-
-    public MultivaluedMap testForm2(MultivaluedMap map) {
-        return map;
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/TripleServiceImpl.java b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/TripleServiceImpl.java
deleted file mode 100644
index f1861454d1..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/java/org/apache/dubbo/demo/provider/TripleServiceImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.demo.provider;
-
-import org.apache.dubbo.demo.TripleService;
-
-public class TripleServiceImpl implements TripleService {
-
-    @Override
-    public String hello() {
-        return "Triple!";
-    }
-}
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/dubbo.properties b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/dubbo.properties
deleted file mode 100644
index dde68cbdf0..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/dubbo.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-dubbo.application.qos-enable=true
-dubbo.application.qos-port=22222
-dubbo.application.qos-accept-foreign-ip=true
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/log4j2.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/log4j2.xml
deleted file mode 100644
index 69e1321d22..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/log4j2.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<Configuration status="WARN">
-    <Appenders>
-        <Console name="Console" target="SYSTEM_OUT" follow="true">
-            <PatternLayout pattern="%style{%d{HH:mm:ss.SSS}}{Magenta} %style{|-}{White}%highlight{%-5p} [%t] %style{%40.40c}{Cyan}:%style{%-3L}{Blue} %style{-|}{White} %m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect)}" disableAnsi="false" charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml b/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
deleted file mode 100644
index ad402bc068..0000000000
--- a/dubbo-demo/dubbo-demo-xml/dubbo-demo-xml-provider/src/main/resources/spring/dubbo-provider.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-  -->
-<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
-       xmlns="http://www.springframework.org/schema/beans"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
-       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
-
-    <dubbo:application name="demo-provider" >
-    </dubbo:application>
-
-    <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
-    <dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/>
-    <dubbo:registry id="registry1" address="zookeeper://127.0.0.1:2181?registry-type=service"/>
-
-    <dubbo:protocol name="dubbo" port="-1"/>
-    <dubbo:protocol name="rest" port="-1"/>
-    <dubbo:protocol name="tri" port="-1"/>
-
-    <bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
-    <bean id="greetingService" class="org.apache.dubbo.demo.provider.GreetingServiceImpl"/>
-    <bean id="restDemoService" class="org.apache.dubbo.demo.provider.RestDemoServiceImpl"/>
-    <bean id="tripleService" class="org.apache.dubbo.demo.provider.TripleServiceImpl"/>
-
-    <dubbo:service delay="5000" interface="org.apache.dubbo.demo.DemoService" timeout="3000" ref="demoService" registry="registry1" protocol="dubbo"/>
-    <dubbo:service delay="5000" version="1.0.0" group="greeting" timeout="5000" interface="org.apache.dubbo.demo.GreetingService"
-                   ref="greetingService" protocol="dubbo"/>
-    <dubbo:service delay="5000" version="1.0.0" timeout="5000" interface="org.apache.dubbo.demo.RestDemoService"
-                   ref="restDemoService" protocol="rest"/>
-    <dubbo:service delay="5000" version="1.0.0" timeout="5000" interface="org.apache.dubbo.demo.TripleService"
-                   ref="tripleService" protocol="tri"/>
-
-</beans>
diff --git a/dubbo-demo/dubbo-demo-xml/pom.xml b/dubbo-demo/dubbo-demo-xml/pom.xml
deleted file mode 100644
index 960f93e9e5..0000000000
--- a/dubbo-demo/dubbo-demo-xml/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.dubbo</groupId>
-    <artifactId>dubbo-demo</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-
-  <artifactId>dubbo-demo-xml</artifactId>
-  <packaging>pom</packaging>
-
-  <modules>
-    <module>dubbo-demo-xml-provider</module>
-    <module>dubbo-demo-xml-consumer</module>
-    <module>dubbo-demo-spring-mvc-rest-consumer</module>
-    <module>dubbo-demo-spring-mvc-rest-provider</module>
-  </modules>
-
-  <properties>
-    <skip_maven_deploy>true</skip_maven_deploy>
-    <spring-boot-maven-plugin.version>2.7.18</spring-boot-maven-plugin.version>
-  </properties>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-maven-plugin</artifactId>
-        <version>${spring-boot-maven-plugin.version}</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>repackage</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/dubbo-demo/pom.xml b/dubbo-demo/pom.xml
index 30b2a1e5dc..41c1291663 100644
--- a/dubbo-demo/pom.xml
+++ b/dubbo-demo/pom.xml
@@ -29,13 +29,8 @@
   <description>The demo module of dubbo project</description>
 
   <modules>
-    <module>dubbo-demo-interface</module>
-    <module>dubbo-demo-xml</module>
-    <module>dubbo-demo-annotation</module>
     <module>dubbo-demo-api</module>
-    <module>dubbo-demo-generic-call</module>
-    <module>dubbo-demo-triple</module>
-    <module>dubbo-demo-native</module>
+    <module>dubbo-demo-spring-boot-idl</module>
     <module>dubbo-demo-spring-boot</module>
   </modules>