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

albumenj 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 583b57be2b remove the remoting-http (#14082)
583b57be2b is described below

commit 583b57be2b9d4f0ccbc9be2bc6e4a190fd5e27c8
Author: 王聪洋 <56506697+wcy666...@users.noreply.github.com>
AuthorDate: Mon May 6 14:55:41 2024 +0800

    remove the remoting-http (#14082)
---
 .artifacts                                         |   1 -
 .../dubbo-demo-native-consumer/pom.xml             |   5 -
 .../dubbo-demo-native-provider/pom.xml             |   6 -
 dubbo-distribution/dubbo-all-shaded/pom.xml        |   6 -
 dubbo-distribution/dubbo-all/pom.xml               |  14 -
 dubbo-distribution/dubbo-core-spi/pom.xml          |   6 -
 dubbo-remoting/dubbo-remoting-http/pom.xml         |  85 ------
 .../apache/dubbo/remoting/http/BaseRestClient.java |  41 ---
 .../org/apache/dubbo/remoting/http/HttpBinder.java |  39 ---
 .../apache/dubbo/remoting/http/HttpHandler.java    |  34 ---
 .../org/apache/dubbo/remoting/http/HttpServer.java |  71 -----
 .../dubbo/remoting/http/RequestTemplate.java       | 299 ---------------------
 .../org/apache/dubbo/remoting/http/RestClient.java |  48 ----
 .../org/apache/dubbo/remoting/http/RestResult.java |  42 ---
 .../remoting/http/config/HttpClientConfig.java     |  60 -----
 .../http/factory/AbstractHttpClientFactory.java    |  63 -----
 .../remoting/http/factory/RestClientFactory.java   |  35 ---
 .../http/factory/impl/ApacheHttpClientFactory.java |  35 ---
 .../http/factory/impl/OkHttpClientFactory.java     |  35 ---
 .../factory/impl/URLConnectionClientFactory.java   |  35 ---
 .../dubbo/remoting/http/jetty/JettyHttpBinder.java |  33 ---
 .../dubbo/remoting/http/jetty/JettyHttpServer.java | 113 --------
 .../remoting/http/jetty/JettyLoggerAdapter.java    | 161 -----------
 .../http/restclient/HttpClientRestClient.java      | 188 -------------
 .../remoting/http/restclient/OKHttpRestClient.java | 150 -----------
 .../http/restclient/URLConnectionRestClient.java   | 170 ------------
 .../remoting/http/servlet/BootstrapListener.java   |  37 ---
 .../remoting/http/servlet/DispatcherServlet.java   |  65 -----
 .../remoting/http/servlet/ServletHttpBinder.java   |  33 ---
 .../remoting/http/servlet/ServletHttpServer.java   |  30 ---
 .../remoting/http/servlet/ServletManager.java      |  50 ----
 .../remoting/http/support/AbstractHttpServer.java  | 124 ---------
 .../remoting/http/tomcat/TomcatHttpBinder.java     |  30 ---
 .../remoting/http/tomcat/TomcatHttpServer.java     | 100 -------
 .../org.apache.dubbo.remoting.http.HttpBinder      |   3 -
 ...e.dubbo.remoting.http.factory.RestClientFactory |   4 -
 .../remoting/http/jetty/JettyHttpBinderTest.java   |  57 ----
 .../http/jetty/JettyLoggerAdapterTest.java         | 127 ---------
 .../dubbo/remoting/http/rest/RestClientTest.java   | 240 -----------------
 .../remoting/http/tomcat/TomcatHttpBinderTest.java |  60 -----
 .../src/test/resources/log4j2-test.xml             |  29 --
 dubbo-remoting/pom.xml                             |   1 -
 dubbo-test/dubbo-dependencies-all/pom.xml          |   5 -
 43 files changed, 2770 deletions(-)

diff --git a/.artifacts b/.artifacts
index cd6334693d..ba6f6896e5 100644
--- a/.artifacts
+++ b/.artifacts
@@ -76,7 +76,6 @@ dubbo-registry-nacos
 dubbo-registry-zookeeper
 dubbo-remoting
 dubbo-remoting-api
-dubbo-remoting-http
 dubbo-remoting-http12
 dubbo-remoting-netty
 dubbo-remoting-netty4
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
index 99b9850612..821c7de7fd 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-consumer/pom.xml
@@ -133,11 +133,6 @@
       <artifactId>dubbo-filter-validation</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-http</artifactId>
-      <version>${project.version}</version>
-    </dependency>
 
     <dependency>
       <groupId>com.alibaba</groupId>
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
index 90d06fdfa3..0068797de9 100644
--- a/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
+++ b/dubbo-demo/dubbo-demo-native/dubbo-demo-native-provider/pom.xml
@@ -133,12 +133,6 @@
       <artifactId>dubbo-filter-validation</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-http</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-
     <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
diff --git a/dubbo-distribution/dubbo-all-shaded/pom.xml 
b/dubbo-distribution/dubbo-all-shaded/pom.xml
index b059115692..8fa70f3390 100644
--- a/dubbo-distribution/dubbo-all-shaded/pom.xml
+++ b/dubbo-distribution/dubbo-all-shaded/pom.xml
@@ -729,9 +729,6 @@
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.rest.annotation.param.parse.consumer.BaseConsumerParamParser</resource>
                 </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                  
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http.factory.RestClientFactory</resource>
-                </transformer>
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.ChannelHandler</resource>
                 </transformer>
@@ -762,9 +759,6 @@
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger</resource>
                 </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                  
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder</resource>
-                </transformer>
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http12.message.HttpMessageEncoderFactory</resource>
                 </transformer>
diff --git a/dubbo-distribution/dubbo-all/pom.xml 
b/dubbo-distribution/dubbo-all/pom.xml
index 19fd7dbbfc..6e60992f60 100644
--- a/dubbo-distribution/dubbo-all/pom.xml
+++ b/dubbo-distribution/dubbo-all/pom.xml
@@ -343,13 +343,6 @@
       <scope>compile</scope>
       <optional>true</optional>
     </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-http</artifactId>
-      <version>${project.version}</version>
-      <scope>compile</scope>
-      <optional>true</optional>
-    </dependency>
     <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-remoting-http12</artifactId>
@@ -553,7 +546,6 @@
                   <include>org.apache.dubbo:dubbo-registry-nacos</include>
                   <include>org.apache.dubbo:dubbo-registry-zookeeper</include>
                   <include>org.apache.dubbo:dubbo-remoting-api</include>
-                  <include>org.apache.dubbo:dubbo-remoting-http</include>
                   <include>org.apache.dubbo:dubbo-remoting-http12</include>
                   <include>org.apache.dubbo:dubbo-remoting-netty4</include>
                   <include>org.apache.dubbo:dubbo-remoting-netty</include>
@@ -784,9 +776,6 @@
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.rest.annotation.param.parse.consumer.BaseConsumerParamParser</resource>
                 </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                  
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http.factory.RestClientFactory</resource>
-                </transformer>
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.ChannelHandler</resource>
                 </transformer>
@@ -817,9 +806,6 @@
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger</resource>
                 </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                  
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder</resource>
-                </transformer>
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http12.message.HttpMessageEncoderFactory</resource>
                 </transformer>
diff --git a/dubbo-distribution/dubbo-core-spi/pom.xml 
b/dubbo-distribution/dubbo-core-spi/pom.xml
index 6ef9c5d928..9ffea1d76c 100644
--- a/dubbo-distribution/dubbo-core-spi/pom.xml
+++ b/dubbo-distribution/dubbo-core-spi/pom.xml
@@ -345,9 +345,6 @@
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.rpc.protocol.rest.annotation.param.parse.consumer.BaseConsumerParamParser</resource>
                 </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                  
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http.factory.RestClientFactory</resource>
-                </transformer>
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.ChannelHandler</resource>
                 </transformer>
@@ -378,9 +375,6 @@
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.exchange.Exchanger</resource>
                 </transformer>
-                <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                  
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder</resource>
-                </transformer>
                 <transformer 
implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                   
<resource>META-INF/dubbo/internal/org.apache.dubbo.remoting.http12.message.HttpMessageEncoderFactory</resource>
                 </transformer>
diff --git a/dubbo-remoting/dubbo-remoting-http/pom.xml 
b/dubbo-remoting/dubbo-remoting-http/pom.xml
deleted file mode 100644
index 91834389bb..0000000000
--- a/dubbo-remoting/dubbo-remoting-http/pom.xml
+++ /dev/null
@@ -1,85 +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-remoting</artifactId>
-    <version>${revision}</version>
-    <relativePath>../pom.xml</relativePath>
-  </parent>
-  <artifactId>dubbo-remoting-http</artifactId>
-  <packaging>jar</packaging>
-  <name>${project.artifactId}</name>
-  <description>The http remoting module of dubbo project</description>
-  <properties>
-    <skip_maven_deploy>false</skip_maven_deploy>
-  </properties>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-common</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-api</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-servlet</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tomcat.embed</groupId>
-      <artifactId>tomcat-embed-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>fluent-hc</artifactId>
-      <version>4.5.14</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>com.squareup.okhttp3</groupId>
-      <artifactId>okhttp</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-rpc-api</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpclient</artifactId>
-    </dependency>
-
-  </dependencies>
-</project>
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/BaseRestClient.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/BaseRestClient.java
deleted file mode 100644
index 23c78419ad..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/BaseRestClient.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.remoting.http;
-
-import org.apache.dubbo.remoting.http.config.HttpClientConfig;
-
-public abstract class BaseRestClient<CLIENT> implements RestClient {
-
-    protected CLIENT client;
-
-    protected HttpClientConfig clientConfig;
-
-    public BaseRestClient(HttpClientConfig clientConfig) {
-        this.clientConfig = clientConfig;
-        client = createHttpClient(clientConfig);
-    }
-
-    protected abstract CLIENT createHttpClient(HttpClientConfig clientConfig);
-
-    public HttpClientConfig getClientConfig() {
-        return clientConfig;
-    }
-
-    public CLIENT getClient() {
-        return client;
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpBinder.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpBinder.java
deleted file mode 100644
index 26db36d92c..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpBinder.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.remoting.http;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.Adaptive;
-import org.apache.dubbo.common.extension.ExtensionScope;
-import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.remoting.Constants;
-
-/**
- * HttpBinder
- */
-@SPI(value = "jetty", scope = ExtensionScope.FRAMEWORK)
-public interface HttpBinder {
-
-    /**
-     * bind the server.
-     *
-     * @param url server url.
-     * @return server.
-     */
-    @Adaptive({Constants.SERVER_KEY})
-    HttpServer bind(URL url, HttpHandler handler);
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpHandler.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpHandler.java
deleted file mode 100644
index 27085f67bc..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpHandler.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.remoting.http;
-
-import java.io.IOException;
-
-/**
- * http invocation handler.
- */
-public interface HttpHandler<REQUEST, RESPONSE> {
-
-    /**
-     * invoke.
-     *
-     * @param request  request.
-     * @param response response.
-     * @throws IOException
-     */
-    void handle(REQUEST request, RESPONSE response) throws IOException;
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpServer.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpServer.java
deleted file mode 100644
index d85582eb76..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/HttpServer.java
+++ /dev/null
@@ -1,71 +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.remoting.http;
-
-import org.apache.dubbo.common.Resetable;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.RemotingServer;
-
-import java.net.InetSocketAddress;
-
-public interface HttpServer extends Resetable, RemotingServer {
-
-    /**
-     * get http handler.
-     *
-     * @return http handler.
-     */
-    HttpHandler getHttpHandler();
-
-    /**
-     * get url.
-     *
-     * @return url
-     */
-    URL getUrl();
-
-    /**
-     * get local address.
-     *
-     * @return local address.
-     */
-    InetSocketAddress getLocalAddress();
-
-    /**
-     * close the channel.
-     */
-    void close();
-
-    /**
-     * Graceful close the channel.
-     */
-    void close(int timeout);
-
-    /**
-     * is bound.
-     *
-     * @return bound
-     */
-    boolean isBound();
-
-    /**
-     * is closed.
-     *
-     * @return closed
-     */
-    boolean isClosed();
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RequestTemplate.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RequestTemplate.java
deleted file mode 100644
index 5536e6c83e..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RequestTemplate.java
+++ /dev/null
@@ -1,299 +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.remoting.http;
-
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.rpc.Invocation;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-public class RequestTemplate implements Serializable {
-    private static final long serialVersionUID = 1L;
-    public static final String CONTENT_ENCODING = "Content-Encoding";
-    private static final String CONTENT_LENGTH = "Content-Length";
-    public static final String ENCODING_GZIP = "gzip";
-    public static final String ENCODING_DEFLATE = "deflate";
-    private static final List<String> EMPTY_ARRAYLIST = new ArrayList<>();
-
-    private final Map<String, Collection<String>> queries = new 
LinkedHashMap<>();
-    private final Map<String, Collection<String>> headers = new 
LinkedHashMap<>();
-    private String httpMethod;
-    private String path;
-    private String address;
-    private Object body;
-    private byte[] byteBody = new byte[0];
-    private String protocol = "http://";;
-    private final Invocation invocation;
-    private String contextPath = "";
-    private Class<?> bodyType;
-
-    public RequestTemplate(Invocation invocation, String httpMethod, String 
address) {
-        this(invocation, httpMethod, address, "");
-    }
-
-    public RequestTemplate(Invocation invocation, String httpMethod, String 
address, String contextPath) {
-        this.httpMethod = httpMethod;
-        this.address = address;
-        this.invocation = invocation;
-        this.contextPath = contextPath;
-    }
-
-    public String getURL() {
-        StringBuilder stringBuilder = new StringBuilder(getProtocol() + 
address);
-
-        stringBuilder.append(getUri());
-        return stringBuilder.toString();
-    }
-
-    public String getUri() {
-        StringBuilder stringBuilder = new StringBuilder(getContextPath() + 
path);
-        return stringBuilder.append(getQueryString()).toString();
-    }
-
-    public String getQueryString() {
-
-        if (queries.isEmpty()) {
-            return "";
-        }
-
-        StringBuilder queryBuilder = new StringBuilder("?");
-        for (String field : queries.keySet()) {
-
-            Collection<String> queryValues = queries.get(field);
-
-            if (queryValues == null || queryValues.isEmpty()) {
-                continue;
-            }
-
-            for (String value : queryValues) {
-                queryBuilder.append('&');
-                queryBuilder.append(field);
-                if (value == null) {
-                    continue;
-                }
-
-                queryBuilder.append('=');
-                queryBuilder.append(value);
-            }
-        }
-
-        return queryBuilder.toString().replace("?&", "?");
-    }
-
-    public RequestTemplate path(String path) {
-        this.path = path;
-        return this;
-    }
-
-    public String getHttpMethod() {
-        return httpMethod;
-    }
-
-    public RequestTemplate httpMethod(String httpMethod) {
-        this.httpMethod = httpMethod;
-        return this;
-    }
-
-    public byte[] getSerializedBody() {
-        return byteBody;
-    }
-
-    public void serializeBody(byte[] body) {
-        addHeader(CONTENT_LENGTH, body.length); // must header
-        this.byteBody = body;
-    }
-
-    public boolean isBodyEmpty() {
-        return getUnSerializedBody() == null;
-    }
-
-    public RequestTemplate body(Object body, Class bodyType) {
-        this.body = body;
-        setBodyType(bodyType);
-        return this;
-    }
-
-    public Object getUnSerializedBody() {
-        return body;
-    }
-
-    public Map<String, Collection<String>> getAllHeaders() {
-        return headers;
-    }
-
-    public Collection<String> getHeaders(String name) {
-        return headers.get(name);
-    }
-
-    public String getHeader(String name) {
-        if (headers.containsKey(name)) {
-
-            Collection<String> headers = getHeaders(name);
-
-            if (headers.isEmpty()) {
-                return null;
-            }
-            String[] strings = headers.toArray(new String[0]);
-            return strings[0];
-
-        } else {
-            return null;
-        }
-    }
-
-    public Collection<String> getEncodingValues() {
-        if (headers.containsKey(CONTENT_ENCODING)) {
-            return headers.get(CONTENT_ENCODING);
-        }
-        return EMPTY_ARRAYLIST;
-    }
-
-    public boolean isGzipEncodedRequest() {
-        return getEncodingValues().contains(ENCODING_GZIP);
-    }
-
-    public boolean isDeflateEncodedRequest() {
-        return getEncodingValues().contains(ENCODING_DEFLATE);
-    }
-
-    public void addHeader(String key, String value) {
-        addValueByKey(key, value, this.headers);
-    }
-
-    public void addHeader(String key, Object value) {
-        addValueByKey(key, String.valueOf(value), this.headers);
-    }
-
-    public void addKeepAliveHeader(int time) {
-        addHeader(Constants.KEEP_ALIVE_HEADER, time);
-        addHeader(Constants.CONNECTION, Constants.KEEP_ALIVE);
-    }
-
-    public void addHeaders(String key, Collection<String> values) {
-        Collection<String> header = getHeaders(key);
-
-        if (header == null) {
-            header = new HashSet<>();
-            this.headers.put(key, header);
-        }
-        header.addAll(values);
-    }
-
-    public void addParam(String key, String value) {
-        addValueByKey(key, value, this.queries);
-    }
-
-    public void addParam(String key, Object value) {
-        addParam(key, String.valueOf(value));
-    }
-
-    public Map<String, Collection<String>> getQueries() {
-        return queries;
-    }
-
-    public Collection<String> getParam(String key) {
-        return getQueries().get(key);
-    }
-
-    public void addParams(String key, Collection<String> values) {
-        Collection<String> params = getParam(key);
-
-        if (params == null) {
-            params = new HashSet<>();
-            this.queries.put(key, params);
-        }
-        params.addAll(values);
-    }
-
-    public void addValueByKey(String key, String value, Map<String, 
Collection<String>> maps) {
-
-        if (value == null) {
-            return;
-        }
-
-        Collection<String> values = null;
-        if (!maps.containsKey(key)) {
-            values = new HashSet<>();
-            maps.put(key, values);
-        }
-        values = maps.get(key);
-
-        values.add(value);
-    }
-
-    public Integer getContentLength() {
-
-        if (!getAllHeaders().containsKey(CONTENT_LENGTH)) {
-            return null;
-        }
-
-        HashSet<String> strings = (HashSet<String>) 
getAllHeaders().get(CONTENT_LENGTH);
-
-        return Integer.parseInt(new ArrayList<>(strings).get(0));
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public void setAddress(String address) {
-        addHeader("Host", address); // must header
-        this.address = address;
-    }
-
-    public String getProtocol() {
-        return protocol;
-    }
-
-    public void setProtocol(String protocol) {
-        this.protocol = protocol;
-    }
-
-    public Invocation getInvocation() {
-        return invocation;
-    }
-
-    public String getContextPath() {
-        if (contextPath == null || contextPath.length() == 0) {
-            return "";
-        }
-
-        if (contextPath.startsWith("/")) {
-            return contextPath;
-        } else {
-            return "/" + contextPath;
-        }
-    }
-
-    public void setContextPath(String contextPath) {
-        this.contextPath = contextPath;
-    }
-
-    public Class<?> getBodyType() {
-        return bodyType;
-    }
-
-    public void setBodyType(Class<?> bodyType) {
-        this.bodyType = bodyType;
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RestClient.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RestClient.java
deleted file mode 100644
index e5b8cecf7d..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RestClient.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.remoting.http;
-
-import org.apache.dubbo.remoting.RemotingException;
-
-import java.util.concurrent.CompletableFuture;
-
-public interface RestClient {
-    /**
-     * send message.
-     *
-     * @param message
-     * @throws RemotingException
-     */
-    CompletableFuture<RestResult> send(RequestTemplate message);
-
-    /**
-     * close the channel.
-     */
-    void close();
-
-    /**
-     * Graceful close the channel.
-     */
-    void close(int timeout);
-
-    /**
-     * is closed.
-     *
-     * @return closed
-     */
-    boolean isClosed();
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RestResult.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RestResult.java
deleted file mode 100644
index bb057675df..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/RestResult.java
+++ /dev/null
@@ -1,42 +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.remoting.http;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-/**
- * rest response facade
- */
-public interface RestResult {
-    String getContentType();
-
-    byte[] getBody() throws IOException;
-
-    Map<String, List<String>> headers();
-
-    byte[] getErrorResponse() throws IOException;
-
-    int getResponseCode() throws IOException;
-
-    String getMessage() throws IOException;
-
-    default String appendErrorMessage(String message, String errorInfo) {
-        return message + "\n error info is: " + errorInfo;
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/config/HttpClientConfig.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/config/HttpClientConfig.java
deleted file mode 100644
index 09e0ab92a1..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/config/HttpClientConfig.java
+++ /dev/null
@@ -1,60 +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.remoting.http.config;
-
-public class HttpClientConfig {
-    private int readTimeout = 6 * 1000;
-    private int writeTimeout = 6 * 1000;
-    private int connectTimeout = 6 * 1000;
-    private int chunkLength = 8196;
-
-    private int HTTP_CLIENT_CONNECTION_MANAGER_MAX_PER_ROUTE = 20;
-    private int HTTP_CLIENT_CONNECTION_MANAGER_MAX_TOTAL = 20;
-    private int HTTPCLIENT_KEEP_ALIVE_DURATION = 30 * 1000;
-    private int HTTP_CLIENT_CONNECTION_MANAGER_CLOSE_WAIT_TIME_MS = 1000;
-    private int HTTP_CLIENT_CONNECTION_MANAGER_CLOSE_IDLE_TIME_S = 30;
-
-    public HttpClientConfig() {}
-
-    public int getReadTimeout() {
-        return readTimeout;
-    }
-
-    public void setReadTimeout(int readTimeout) {
-        this.readTimeout = readTimeout;
-    }
-
-    public int getWriteTimeout() {
-        return writeTimeout;
-    }
-
-    public void setWriteTimeout(int writeTimeout) {
-        this.writeTimeout = writeTimeout;
-    }
-
-    public int getConnectTimeout() {
-        return connectTimeout;
-    }
-
-    public void setConnectTimeout(int connectTimeout) {
-        this.connectTimeout = connectTimeout;
-    }
-
-    public int getChunkLength() {
-        return chunkLength;
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/AbstractHttpClientFactory.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/AbstractHttpClientFactory.java
deleted file mode 100644
index ad9e7f7821..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/AbstractHttpClientFactory.java
+++ /dev/null
@@ -1,63 +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.remoting.http.factory;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.config.HttpClientConfig;
-import org.apache.dubbo.rpc.RpcException;
-
-/**
- * AbstractHttpClientFactory
- */
-public abstract class AbstractHttpClientFactory implements RestClientFactory {
-
-    protected final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(getClass());
-
-    // TODO   load config
-    protected HttpClientConfig httpClientConfig = new HttpClientConfig();
-
-    //////////////////////////////////////// implements start 
///////////////////////////////////////////////
-    @Override
-    public RestClient createRestClient(URL url) throws RpcException {
-
-        beforeCreated(url);
-
-        // create a raw client
-        RestClient restClient = doCreateRestClient(url);
-
-        // postprocessor
-        afterCreated(restClient);
-
-        return restClient;
-    }
-
-    //////////////////////////////////////// implements end 
///////////////////////////////////////////////
-
-    ////////////////////////////////////////   inner methods  
///////////////////////////////////////////////
-
-    protected void beforeCreated(URL url) {}
-
-    protected abstract RestClient doCreateRestClient(URL url) throws 
RpcException;
-
-    protected void afterCreated(RestClient client) {}
-
-    ////////////////////////////////////////   inner methods  
///////////////////////////////////////////////
-
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/RestClientFactory.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/RestClientFactory.java
deleted file mode 100644
index c64453dbda..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/RestClientFactory.java
+++ /dev/null
@@ -1,35 +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.remoting.http.factory;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.Adaptive;
-import org.apache.dubbo.common.extension.ExtensionScope;
-import org.apache.dubbo.common.extension.SPI;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.rpc.RpcException;
-
-/**
- * RestClientFactory. (API/SPI, Singleton, ThreadSafe)
- */
-@SPI(value = Constants.OK_HTTP, scope = ExtensionScope.FRAMEWORK)
-public interface RestClientFactory {
-
-    @Adaptive({Constants.CLIENT_KEY})
-    RestClient createRestClient(URL url) throws RpcException;
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/ApacheHttpClientFactory.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/ApacheHttpClientFactory.java
deleted file mode 100644
index 89d9c36f6f..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/ApacheHttpClientFactory.java
+++ /dev/null
@@ -1,35 +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.remoting.http.factory.impl;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.Activate;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.factory.AbstractHttpClientFactory;
-import org.apache.dubbo.remoting.http.restclient.HttpClientRestClient;
-import org.apache.dubbo.rpc.RpcException;
-
-@Activate(Constants.APACHE_HTTP_CLIENT)
-public class ApacheHttpClientFactory extends AbstractHttpClientFactory {
-
-    @Override
-    protected RestClient doCreateRestClient(URL url) throws RpcException {
-
-        return new HttpClientRestClient(httpClientConfig);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/OkHttpClientFactory.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/OkHttpClientFactory.java
deleted file mode 100644
index 523df3caf8..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/OkHttpClientFactory.java
+++ /dev/null
@@ -1,35 +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.remoting.http.factory.impl;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.Activate;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.factory.AbstractHttpClientFactory;
-import org.apache.dubbo.remoting.http.restclient.OKHttpRestClient;
-import org.apache.dubbo.rpc.RpcException;
-
-@Activate(Constants.OK_HTTP)
-public class OkHttpClientFactory extends AbstractHttpClientFactory {
-
-    @Override
-    protected RestClient doCreateRestClient(URL url) throws RpcException {
-
-        return new OKHttpRestClient(httpClientConfig);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/URLConnectionClientFactory.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/URLConnectionClientFactory.java
deleted file mode 100644
index 40c2a82a66..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/factory/impl/URLConnectionClientFactory.java
+++ /dev/null
@@ -1,35 +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.remoting.http.factory.impl;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.extension.Activate;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.factory.AbstractHttpClientFactory;
-import org.apache.dubbo.remoting.http.restclient.URLConnectionRestClient;
-import org.apache.dubbo.rpc.RpcException;
-
-@Activate(Constants.URL_CONNECTION)
-public class URLConnectionClientFactory extends AbstractHttpClientFactory {
-
-    @Override
-    protected RestClient doCreateRestClient(URL url) throws RpcException {
-
-        return new URLConnectionRestClient(httpClientConfig);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyHttpBinder.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyHttpBinder.java
deleted file mode 100644
index 05e5dc5a35..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyHttpBinder.java
+++ /dev/null
@@ -1,33 +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.remoting.http.jetty;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.http.HttpBinder;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-/**
- * JettyHttpTransporter
- */
-public class JettyHttpBinder implements HttpBinder {
-
-    @Override
-    public HttpServer bind(URL url, HttpHandler handler) {
-        return new JettyHttpServer(url, handler);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyHttpServer.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyHttpServer.java
deleted file mode 100644
index 0139a5d79f..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyHttpServer.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.remoting.http.jetty;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.servlet.DispatcherServlet;
-import org.apache.dubbo.remoting.http.servlet.ServletManager;
-import org.apache.dubbo.remoting.http.support.AbstractHttpServer;
-
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ServerConnector;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.thread.QueuedThreadPool;
-
-import static 
org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;
-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;
-import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_FAILED_STOP_HTTP_SERVER;
-
-public class JettyHttpServer extends AbstractHttpServer {
-
-    private static final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(JettyHttpServer.class);
-
-    private Server server;
-
-    private URL url;
-
-    public JettyHttpServer(URL url, final HttpHandler handler) {
-        super(url, handler);
-        this.url = url;
-
-        // set dubbo's logger
-        System.setProperty("org.eclipse.jetty.util.log.class", 
JettyLoggerAdapter.class.getName());
-
-        
DispatcherServlet.addHttpHandler(url.getParameter(Constants.BIND_PORT_KEY, 
url.getPort()), handler);
-
-        int threads = url.getParameter(THREADS_KEY, DEFAULT_THREADS);
-        QueuedThreadPool threadPool = new QueuedThreadPool();
-        threadPool.setDaemon(true);
-        threadPool.setMaxThreads(threads);
-        threadPool.setMinThreads(threads);
-
-        server = new Server(threadPool);
-
-        ServerConnector connector = new ServerConnector(server);
-
-        String bindIp = url.getParameter(Constants.BIND_IP_KEY, url.getHost());
-        if (!url.isAnyHost() && NetUtils.isValidLocalHost(bindIp)) {
-            connector.setHost(bindIp);
-        }
-        connector.setPort(url.getParameter(Constants.BIND_PORT_KEY, 
url.getPort()));
-
-        server.addConnector(connector);
-
-        ServletHandler servletHandler = new ServletHandler();
-        ServletHolder servletHolder = 
servletHandler.addServletWithMapping(DispatcherServlet.class, "/*");
-        servletHolder.setInitOrder(2);
-
-        // dubbo's original impl can't support the use of ServletContext
-        //        server.addHandler(servletHandler);
-        // TODO Context.SESSIONS is the best option here? (In jetty 9.x, it 
becomes ServletContextHandler.SESSIONS)
-        ServletContextHandler context = new ServletContextHandler(server, "/", 
ServletContextHandler.SESSIONS);
-        context.setServletHandler(servletHandler);
-        ServletManager.getInstance()
-                .addServletContext(
-                        url.getParameter(Constants.BIND_PORT_KEY, 
url.getPort()), context.getServletContext());
-
-        try {
-            server.start();
-        } catch (Exception e) {
-            throw new IllegalStateException(
-                    "Failed to start jetty server on " + 
url.getParameter(Constants.BIND_IP_KEY) + ":"
-                            + url.getParameter(Constants.BIND_PORT_KEY) + ", 
cause: " + e.getMessage(),
-                    e);
-        }
-    }
-
-    @Override
-    public void close() {
-        super.close();
-
-        //
-        
ServletManager.getInstance().removeServletContext(url.getParameter(Constants.BIND_PORT_KEY,
 url.getPort()));
-
-        if (server != null) {
-            try {
-                server.stop();
-            } catch (Exception e) {
-                logger.warn(COMMON_FAILED_STOP_HTTP_SERVER, "", "", 
e.getMessage(), e);
-            }
-        }
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapter.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapter.java
deleted file mode 100644
index b93cb3f2ce..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapter.java
+++ /dev/null
@@ -1,161 +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.remoting.http.jetty;
-
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-
-import org.eclipse.jetty.util.log.AbstractLogger;
-import org.eclipse.jetty.util.log.Logger;
-
-import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_UNEXPECTED_EXCEPTION;
-
-/**
- * logger adapter for jetty
- */
-public class JettyLoggerAdapter extends AbstractLogger {
-    protected String name;
-
-    private final ErrorTypeAwareLogger logger;
-
-    private static boolean debugEnabled = false;
-
-    public JettyLoggerAdapter() {
-        this("org.apache.dubbo.remoting.http.jetty");
-    }
-
-    public JettyLoggerAdapter(Class<?> clazz) {
-        this(clazz.getName());
-    }
-
-    public JettyLoggerAdapter(String name) {
-        this.name = name;
-        this.logger = LoggerFactory.getErrorTypeAwareLogger(name);
-    }
-
-    @Override
-    protected Logger newLogger(String name) {
-        return new JettyLoggerAdapter(name);
-    }
-
-    @Override
-    public String getName() {
-        return this.name;
-    }
-
-    @Override
-    public void warn(String msg, Object... objects) {
-        if (logger.isWarnEnabled()) {
-            logger.warn(COMMON_UNEXPECTED_EXCEPTION, "", "", this.format(msg, 
objects));
-        }
-    }
-
-    @Override
-    public void warn(Throwable throwable) {
-        if (logger.isWarnEnabled()) {
-            logger.warn(COMMON_UNEXPECTED_EXCEPTION, "", "", 
throwable.getMessage(), throwable);
-        }
-    }
-
-    @Override
-    public void warn(String msg, Throwable throwable) {
-        if (logger.isWarnEnabled()) {
-            logger.warn(COMMON_UNEXPECTED_EXCEPTION, "", "", msg, throwable);
-        }
-    }
-
-    @Override
-    public void info(String msg, Object... objects) {
-        if (logger.isInfoEnabled()) {
-            logger.info(this.format(msg, objects));
-        }
-    }
-
-    @Override
-    public void info(Throwable throwable) {
-        if (logger.isInfoEnabled()) {
-            logger.info(throwable);
-        }
-    }
-
-    @Override
-    public void info(String msg, Throwable throwable) {
-        if (logger.isInfoEnabled()) {
-            logger.info(msg, throwable);
-        }
-    }
-
-    @Override
-    public boolean isDebugEnabled() {
-        return debugEnabled;
-    }
-
-    @Override
-    public void setDebugEnabled(boolean enabled) {
-        debugEnabled = enabled;
-    }
-
-    @Override
-    public void debug(String msg, Object... objects) {
-        if (debugEnabled && logger.isDebugEnabled()) {
-            logger.debug(this.format(msg, objects));
-        }
-    }
-
-    @Override
-    public void debug(Throwable throwable) {
-        if (debugEnabled && logger.isDebugEnabled()) {
-            logger.debug(throwable);
-        }
-    }
-
-    @Override
-    public void debug(String msg, Throwable throwable) {
-        if (debugEnabled && logger.isDebugEnabled()) {
-            logger.debug(msg, throwable);
-        }
-    }
-
-    @Override
-    public void ignore(Throwable throwable) {
-        if (logger.isWarnEnabled()) {
-            logger.warn(COMMON_UNEXPECTED_EXCEPTION, "", "", "IGNORED 
EXCEPTION ", throwable);
-        }
-    }
-
-    private String format(String msg, Object... args) {
-        msg = String.valueOf(msg); // Avoids NPE
-        String braces = "{}";
-        StringBuilder builder = new StringBuilder();
-        int start = 0;
-        for (Object arg : args) {
-            int bracesIndex = msg.indexOf(braces, start);
-            if (bracesIndex < 0) {
-                builder.append(msg.substring(start));
-                builder.append(' ');
-                builder.append(arg);
-                start = msg.length();
-            } else {
-                builder.append(msg, start, bracesIndex);
-                builder.append(arg);
-                start = bracesIndex + braces.length();
-            }
-        }
-        builder.append(msg.substring(start));
-        return builder.toString();
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/HttpClientRestClient.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/HttpClientRestClient.java
deleted file mode 100644
index f09b288c5f..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/HttpClientRestClient.java
+++ /dev/null
@@ -1,188 +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.remoting.http.restclient;
-
-import org.apache.dubbo.remoting.http.RequestTemplate;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.RestResult;
-import org.apache.dubbo.remoting.http.config.HttpClientConfig;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.stream.Collectors;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpEntityEnclosingRequest;
-import org.apache.http.client.config.RequestConfig;
-import org.apache.http.client.methods.CloseableHttpResponse;
-import org.apache.http.client.methods.HttpDelete;
-import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
-import org.apache.http.client.methods.HttpGet;
-import org.apache.http.client.methods.HttpHead;
-import org.apache.http.client.methods.HttpOptions;
-import org.apache.http.client.methods.HttpPatch;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.client.methods.HttpPut;
-import org.apache.http.client.methods.HttpRequestBase;
-import org.apache.http.client.methods.HttpTrace;
-import org.apache.http.entity.ByteArrayEntity;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
-
-public class HttpClientRestClient implements RestClient {
-    private final CloseableHttpClient closeableHttpClient;
-    private final HttpClientConfig httpClientConfig;
-
-    public HttpClientRestClient(HttpClientConfig clientConfig) {
-        closeableHttpClient = createHttpClient();
-        httpClientConfig = clientConfig;
-    }
-
-    @Override
-    public CompletableFuture<RestResult> send(RequestTemplate requestTemplate) 
{
-
-        HttpRequestBase httpRequest = null;
-        String httpMethod = requestTemplate.getHttpMethod();
-
-        httpRequest = createHttpUriRequest(httpMethod, requestTemplate);
-
-        if (httpRequest instanceof HttpEntityEnclosingRequest) {
-            ((HttpEntityEnclosingRequestBase) httpRequest)
-                    .setEntity(new 
ByteArrayEntity(requestTemplate.getSerializedBody()));
-        }
-
-        Map<String, Collection<String>> allHeaders = 
requestTemplate.getAllHeaders();
-
-        allHeaders.remove("Content-Length");
-        // header
-        for (String headerName : allHeaders.keySet()) {
-            Collection<String> headerValues = allHeaders.get(headerName);
-
-            for (String headerValue : headerValues) {
-                httpRequest.addHeader(headerName, headerValue);
-            }
-        }
-
-        httpRequest.setConfig(getRequestConfig(httpClientConfig));
-
-        CompletableFuture<RestResult> future = new CompletableFuture<>();
-        try {
-            CloseableHttpResponse response = 
closeableHttpClient.execute(httpRequest);
-            future.complete(new RestResult() {
-                @Override
-                public String getContentType() {
-                    Header header = response.getFirstHeader("Content-Type");
-                    return header == null ? null : header.getValue();
-                }
-
-                @Override
-                public byte[] getBody() throws IOException {
-                    if (response.getEntity() == null) {
-                        return new byte[0];
-                    }
-                    return 
IOUtils.toByteArray(response.getEntity().getContent());
-                }
-
-                @Override
-                public Map<String, List<String>> headers() {
-                    return Arrays.stream(response.getAllHeaders())
-                            .collect(Collectors.toMap(Header::getName, h -> 
Collections.singletonList(h.getValue())));
-                }
-
-                @Override
-                public byte[] getErrorResponse() throws IOException {
-                    return getBody();
-                }
-
-                @Override
-                public int getResponseCode() {
-                    return response.getStatusLine().getStatusCode();
-                }
-
-                @Override
-                public String getMessage() throws IOException {
-                    return appendErrorMessage(
-                            response.getStatusLine().getReasonPhrase(), new 
String(getErrorResponse()));
-                }
-            });
-        } catch (IOException e) {
-            future.completeExceptionally(e);
-        }
-        return future;
-    }
-
-    private RequestConfig getRequestConfig(HttpClientConfig clientConfig) {
-
-        // TODO config
-        return RequestConfig.custom().build();
-    }
-
-    @Override
-    public void close() {
-        try {
-            closeableHttpClient.close();
-        } catch (IOException e) {
-
-        }
-    }
-
-    @Override
-    public void close(int timeout) {}
-
-    @Override
-    public boolean isClosed() {
-        // TODO close judge
-        return true;
-    }
-
-    public CloseableHttpClient createHttpClient() {
-        PoolingHttpClientConnectionManager connectionManager = new 
PoolingHttpClientConnectionManager();
-        return 
HttpClients.custom().setConnectionManager(connectionManager).build();
-    }
-
-    protected HttpRequestBase createHttpUriRequest(String httpMethod, 
RequestTemplate requestTemplate) {
-        String uri = requestTemplate.getURL();
-        HttpRequestBase httpUriRequest = null;
-        if (HttpGet.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpGet(uri);
-        } else if (HttpHead.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpHead(uri);
-        } else if (HttpPost.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpPost(uri);
-        } else if (HttpPut.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpPut(uri);
-        } else if (HttpPatch.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpPatch(uri);
-        } else if (HttpDelete.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpDelete(uri);
-        } else if (HttpOptions.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpOptions(uri);
-        } else if (HttpTrace.METHOD_NAME.equals(httpMethod)) {
-            httpUriRequest = new HttpTrace(uri);
-        } else {
-            throw new IllegalArgumentException("Invalid HTTP method: " + 
httpMethod);
-        }
-        return httpUriRequest;
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/OKHttpRestClient.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/OKHttpRestClient.java
deleted file mode 100644
index 36ba2e6d18..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/OKHttpRestClient.java
+++ /dev/null
@@ -1,150 +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.remoting.http.restclient;
-
-import org.apache.dubbo.remoting.http.RequestTemplate;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.RestResult;
-import org.apache.dubbo.remoting.http.config.HttpClientConfig;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-import okhttp3.Call;
-import okhttp3.Callback;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.RequestBody;
-import okhttp3.Response;
-import okhttp3.ResponseBody;
-import okhttp3.internal.http.HttpMethod;
-
-// TODO add version 4.0 implements ,and default version is < 4.0,for 
dependency conflict
-public class OKHttpRestClient implements RestClient {
-    private final OkHttpClient okHttpClient;
-    private final HttpClientConfig httpClientConfig;
-
-    public OKHttpRestClient(HttpClientConfig clientConfig) {
-        this.okHttpClient = createHttpClient(clientConfig);
-        this.httpClientConfig = clientConfig;
-    }
-
-    @Override
-    public CompletableFuture<RestResult> send(RequestTemplate requestTemplate) 
{
-
-        Request.Builder builder = new Request.Builder();
-        // url
-        builder.url(requestTemplate.getURL());
-
-        Map<String, Collection<String>> allHeaders = 
requestTemplate.getAllHeaders();
-
-        boolean hasBody = false;
-        RequestBody requestBody = null;
-        // GET & HEAD body is forbidden
-        if (HttpMethod.permitsRequestBody(requestTemplate.getHttpMethod())) {
-            requestBody = RequestBody.create(null, 
requestTemplate.getSerializedBody());
-            hasBody = true;
-        }
-
-        // header
-        for (String headerName : allHeaders.keySet()) {
-            Collection<String> headerValues = allHeaders.get(headerName);
-            if (!hasBody && "Content-Length".equals(headerName)) {
-                continue;
-            }
-            for (String headerValue : headerValues) {
-
-                builder.addHeader(headerName, headerValue);
-            }
-        }
-
-        builder.method(requestTemplate.getHttpMethod(), requestBody);
-
-        CompletableFuture<RestResult> future = new CompletableFuture<>();
-
-        okHttpClient.newCall(builder.build()).enqueue(new Callback() {
-            @Override
-            public void onFailure(Call call, IOException e) {
-                future.completeExceptionally(e);
-            }
-
-            @Override
-            public void onResponse(Call call, Response response) throws 
IOException {
-                future.complete(new RestResult() {
-                    @Override
-                    public String getContentType() {
-                        return response.header("Content-Type");
-                    }
-
-                    @Override
-                    public byte[] getBody() throws IOException {
-                        ResponseBody body = response.body();
-                        return body == null ? null : body.bytes();
-                    }
-
-                    @Override
-                    public Map<String, List<String>> headers() {
-                        return response.headers().toMultimap();
-                    }
-
-                    @Override
-                    public byte[] getErrorResponse() throws IOException {
-                        return getBody();
-                    }
-
-                    @Override
-                    public int getResponseCode() throws IOException {
-                        return response.code();
-                    }
-
-                    @Override
-                    public String getMessage() throws IOException {
-                        return appendErrorMessage(response.message(), new 
String(getBody()));
-                    }
-                });
-            }
-        });
-
-        return future;
-    }
-
-    @Override
-    public void close() {
-        okHttpClient.connectionPool().evictAll();
-    }
-
-    @Override
-    public void close(int timeout) {}
-
-    @Override
-    public boolean isClosed() {
-        return okHttpClient.retryOnConnectionFailure();
-    }
-
-    public OkHttpClient createHttpClient(HttpClientConfig httpClientConfig) {
-        OkHttpClient client = new OkHttpClient.Builder()
-                .readTimeout(httpClientConfig.getReadTimeout(), 
TimeUnit.SECONDS)
-                .writeTimeout(httpClientConfig.getWriteTimeout(), 
TimeUnit.SECONDS)
-                .connectTimeout(httpClientConfig.getConnectTimeout(), 
TimeUnit.SECONDS)
-                .build();
-        return client;
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
deleted file mode 100644
index 65f20a19f2..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/restclient/URLConnectionRestClient.java
+++ /dev/null
@@ -1,170 +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.remoting.http.restclient;
-
-import org.apache.dubbo.remoting.http.RequestTemplate;
-import org.apache.dubbo.remoting.http.RestClient;
-import org.apache.dubbo.remoting.http.RestResult;
-import org.apache.dubbo.remoting.http.config.HttpClientConfig;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.zip.DeflaterOutputStream;
-import java.util.zip.GZIPOutputStream;
-
-import org.apache.commons.io.IOUtils;
-
-public class URLConnectionRestClient implements RestClient {
-    private final HttpClientConfig clientConfig;
-
-    public URLConnectionRestClient(HttpClientConfig clientConfig) {
-        this.clientConfig = clientConfig;
-    }
-
-    @Override
-    public CompletableFuture<RestResult> send(RequestTemplate requestTemplate) 
{
-
-        CompletableFuture<RestResult> future = new CompletableFuture<>();
-
-        try {
-            HttpURLConnection connection = (HttpURLConnection) new 
URL(requestTemplate.getURL()).openConnection();
-            connection.setConnectTimeout(clientConfig.getConnectTimeout());
-            connection.setReadTimeout(clientConfig.getReadTimeout());
-            connection.setRequestMethod(requestTemplate.getHttpMethod());
-
-            prepareConnection(connection, requestTemplate.getHttpMethod());
-
-            // writeHeaders
-
-            for (String field : requestTemplate.getAllHeaders().keySet()) {
-                for (String value : requestTemplate.getHeaders(field)) {
-                    connection.addRequestProperty(field, value);
-                }
-            }
-
-            // writeBody
-
-            boolean gzipEncodedRequest = 
requestTemplate.isGzipEncodedRequest();
-            boolean deflateEncodedRequest = 
requestTemplate.isDeflateEncodedRequest();
-            if (requestTemplate.isBodyEmpty()) {
-                future.complete(getRestResultFromConnection(connection));
-                return future;
-            }
-            Integer contentLength = requestTemplate.getContentLength();
-
-            if (contentLength != null) {
-                connection.setFixedLengthStreamingMode(contentLength);
-            } else {
-                
connection.setChunkedStreamingMode(clientConfig.getChunkLength());
-            }
-
-            OutputStream out = connection.getOutputStream();
-            if (gzipEncodedRequest) {
-                out = new GZIPOutputStream(out);
-            } else if (deflateEncodedRequest) {
-                out = new DeflaterOutputStream(out);
-            }
-            try {
-                out.write(requestTemplate.getSerializedBody());
-            } finally {
-                try {
-                    out.close();
-                } catch (IOException suppressed) {
-                }
-            }
-
-            future.complete(getRestResultFromConnection(connection));
-        } catch (Exception e) {
-            future.completeExceptionally(e);
-        }
-
-        return future;
-    }
-
-    @Override
-    public void close() {}
-
-    @Override
-    public void close(int timeout) {}
-
-    @Override
-    public boolean isClosed() {
-        return true;
-    }
-
-    private RestResult getRestResultFromConnection(HttpURLConnection 
connection) {
-
-        return new RestResult() {
-            @Override
-            public String getContentType() {
-                return connection.getContentType();
-            }
-
-            @Override
-            public byte[] getBody() throws IOException {
-                return IOUtils.toByteArray(connection.getInputStream());
-            }
-
-            @Override
-            public Map<String, List<String>> headers() {
-                return connection.getHeaderFields();
-            }
-
-            @Override
-            public byte[] getErrorResponse() throws IOException {
-                return IOUtils.toByteArray(connection.getErrorStream());
-            }
-
-            @Override
-            public int getResponseCode() throws IOException {
-                return connection.getResponseCode();
-            }
-
-            @Override
-            public String getMessage() throws IOException {
-                return appendErrorMessage(connection.getResponseMessage(), new 
String(getErrorResponse()));
-            }
-        };
-    }
-
-    private void prepareConnection(HttpURLConnection connection, String 
httpMethod) throws IOException {
-
-        connection.setDoInput(true);
-
-        if ("GET".equals(httpMethod)) {
-            connection.setInstanceFollowRedirects(true);
-        } else {
-            connection.setInstanceFollowRedirects(false);
-        }
-
-        if ("POST".equals(httpMethod)
-                || "PUT".equals(httpMethod)
-                || "PATCH".equals(httpMethod)
-                || "DELETE".equals(httpMethod)) {
-            connection.setDoOutput(true);
-        } else {
-            connection.setDoOutput(false);
-        }
-
-        connection.setRequestMethod(httpMethod);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/BootstrapListener.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/BootstrapListener.java
deleted file mode 100644
index 0a902f292f..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/BootstrapListener.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.dubbo.remoting.http.servlet;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-
-/**
- * This class must be defined before something like spring's 
ContextLoaderListener in web.xml
- */
-public class BootstrapListener implements ServletContextListener {
-
-    @Override
-    public void contextInitialized(ServletContextEvent servletContextEvent) {
-        ServletManager.getInstance()
-                .addServletContext(ServletManager.EXTERNAL_SERVER_PORT, 
servletContextEvent.getServletContext());
-    }
-
-    @Override
-    public void contextDestroyed(ServletContextEvent servletContextEvent) {
-        
ServletManager.getInstance().removeServletContext(ServletManager.EXTERNAL_SERVER_PORT);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/DispatcherServlet.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/DispatcherServlet.java
deleted file mode 100644
index 0f2358cee0..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/DispatcherServlet.java
+++ /dev/null
@@ -1,65 +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.remoting.http.servlet;
-
-import org.apache.dubbo.remoting.http.HttpHandler;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.IOException;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Service dispatcher Servlet.
- */
-public class DispatcherServlet extends HttpServlet {
-
-    private static final long serialVersionUID = 5766349180380479888L;
-    private static final Map<Integer, HttpHandler> HANDLERS = new 
ConcurrentHashMap<>();
-    private static DispatcherServlet INSTANCE;
-
-    public DispatcherServlet() {
-        DispatcherServlet.INSTANCE = this;
-    }
-
-    public static void addHttpHandler(int port, HttpHandler processor) {
-        HANDLERS.put(port, processor);
-    }
-
-    public static void removeHttpHandler(int port) {
-        HANDLERS.remove(port);
-    }
-
-    public static DispatcherServlet getInstance() {
-        return INSTANCE;
-    }
-
-    @Override
-    protected void service(HttpServletRequest request, HttpServletResponse 
response)
-            throws ServletException, IOException {
-        HttpHandler handler = HANDLERS.get(request.getLocalPort());
-        if (handler == null) { // service not found.
-            response.sendError(HttpServletResponse.SC_NOT_FOUND, "Service not 
found.");
-        } else {
-            handler.handle(request, response);
-        }
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java
deleted file mode 100644
index 33aecc5aff..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletHttpBinder.java
+++ /dev/null
@@ -1,33 +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.remoting.http.servlet;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.http.HttpBinder;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-/**
- * ServletHttpTransporter
- */
-public class ServletHttpBinder implements HttpBinder {
-
-    @Override
-    public HttpServer bind(URL url, HttpHandler handler) {
-        return new ServletHttpServer(url, handler);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletHttpServer.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletHttpServer.java
deleted file mode 100644
index bf0b01457e..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletHttpServer.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.remoting.http.servlet;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.support.AbstractHttpServer;
-
-public class ServletHttpServer extends AbstractHttpServer {
-
-    public ServletHttpServer(URL url, HttpHandler handler) {
-        super(url, handler);
-        
DispatcherServlet.addHttpHandler(url.getParameter(Constants.BIND_PORT_KEY, 
8080), handler);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletManager.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletManager.java
deleted file mode 100644
index dc71cd862d..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/servlet/ServletManager.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.remoting.http.servlet;
-
-import javax.servlet.ServletContext;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * TODO this may not be a pretty elegant solution,
- */
-public class ServletManager {
-
-    public static final int EXTERNAL_SERVER_PORT = -1234;
-
-    private static final ServletManager INSTANCE = new ServletManager();
-
-    private final Map<Integer, ServletContext> contextMap = new 
ConcurrentHashMap<>();
-
-    public static ServletManager getInstance() {
-        return INSTANCE;
-    }
-
-    public void addServletContext(int port, ServletContext servletContext) {
-        contextMap.put(port, servletContext);
-    }
-
-    public void removeServletContext(int port) {
-        contextMap.remove(port);
-    }
-
-    public ServletContext getServletContext(int port) {
-        return contextMap.get(port);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/support/AbstractHttpServer.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/support/AbstractHttpServer.java
deleted file mode 100644
index cc01b1e064..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/support/AbstractHttpServer.java
+++ /dev/null
@@ -1,124 +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.remoting.http.support;
-
-import org.apache.dubbo.common.Parameters;
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.Channel;
-import org.apache.dubbo.remoting.ChannelHandler;
-import org.apache.dubbo.remoting.RemotingException;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-import java.net.InetSocketAddress;
-import java.util.Collection;
-
-/**
- * AbstractHttpServer
- */
-public abstract class AbstractHttpServer implements HttpServer {
-
-    private final URL url;
-
-    private final HttpHandler handler;
-
-    private volatile boolean closed;
-
-    public AbstractHttpServer(URL url, HttpHandler handler) {
-        if (url == null) {
-            throw new IllegalArgumentException("url == null");
-        }
-        if (handler == null) {
-            throw new IllegalArgumentException("handler == null");
-        }
-        this.url = url;
-        this.handler = handler;
-    }
-
-    @Override
-    public HttpHandler getHttpHandler() {
-        return handler;
-    }
-
-    @Override
-    public URL getUrl() {
-        return url;
-    }
-
-    @Override
-    public void reset(URL url) {}
-
-    @Override
-    public boolean isBound() {
-        return true;
-    }
-
-    @Override
-    public InetSocketAddress getLocalAddress() {
-        return url.toInetSocketAddress();
-    }
-
-    @Override
-    public void close() {
-        closed = true;
-    }
-
-    @Override
-    public void close(int timeout) {
-        close();
-    }
-
-    @Override
-    public boolean isClosed() {
-        return closed;
-    }
-
-    /**
-     * Following methods are extended from RemotingServer, useless for http 
servers
-     */
-    @Override
-    public boolean canHandleIdle() {
-        return false;
-    }
-
-    @Override
-    public Collection<Channel> getChannels() {
-        return null;
-    }
-
-    @Override
-    public Channel getChannel(InetSocketAddress remoteAddress) {
-        return null;
-    }
-
-    @Override
-    public void reset(Parameters parameters) {}
-
-    @Override
-    public ChannelHandler getChannelHandler() {
-        return null;
-    }
-
-    @Override
-    public void send(Object message) throws RemotingException {}
-
-    @Override
-    public void send(Object message, boolean sent) throws RemotingException {}
-
-    @Override
-    public void startClose() {}
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinder.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinder.java
deleted file mode 100755
index 92b4bf1c70..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinder.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.remoting.http.tomcat;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.remoting.http.HttpBinder;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-public class TomcatHttpBinder implements HttpBinder {
-
-    @Override
-    public HttpServer bind(URL url, HttpHandler handler) {
-        return new TomcatHttpServer(url, handler);
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java
 
b/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java
deleted file mode 100755
index 002f963c35..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpServer.java
+++ /dev/null
@@ -1,100 +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.remoting.http.tomcat;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
-import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.SystemPropertyConfigUtils;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.servlet.DispatcherServlet;
-import org.apache.dubbo.remoting.http.servlet.ServletManager;
-import org.apache.dubbo.remoting.http.support.AbstractHttpServer;
-
-import java.io.File;
-
-import org.apache.catalina.Context;
-import org.apache.catalina.LifecycleException;
-import org.apache.catalina.connector.Connector;
-import org.apache.catalina.startup.Tomcat;
-
-import static 
org.apache.dubbo.common.constants.CommonConstants.DEFAULT_THREADS;
-import static 
org.apache.dubbo.common.constants.CommonConstants.SystemProperty.SYSTEM_JAVA_IO_TMPDIR;
-import static org.apache.dubbo.common.constants.CommonConstants.THREADS_KEY;
-import static 
org.apache.dubbo.common.constants.LoggerCodeConstants.COMMON_FAILED_STOP_HTTP_SERVER;
-import static org.apache.dubbo.remoting.Constants.ACCEPTS_KEY;
-
-public class TomcatHttpServer extends AbstractHttpServer {
-
-    private static final ErrorTypeAwareLogger logger = 
LoggerFactory.getErrorTypeAwareLogger(TomcatHttpServer.class);
-
-    private final Tomcat tomcat;
-
-    private final URL url;
-
-    public TomcatHttpServer(URL url, final HttpHandler handler) {
-        super(url, handler);
-
-        this.url = url;
-        DispatcherServlet.addHttpHandler(url.getPort(), handler);
-        String baseDir = new 
File(SystemPropertyConfigUtils.getSystemProperty(SYSTEM_JAVA_IO_TMPDIR)).getAbsolutePath();
-        tomcat = new Tomcat();
-
-        Connector connector = tomcat.getConnector();
-        connector.setPort(url.getPort());
-        connector.setProperty("maxThreads", 
String.valueOf(url.getParameter(THREADS_KEY, DEFAULT_THREADS)));
-        connector.setProperty("maxConnections", 
String.valueOf(url.getParameter(ACCEPTS_KEY, -1)));
-        connector.setProperty("URIEncoding", "UTF-8");
-        connector.setProperty("connectionTimeout", "60000");
-        connector.setProperty("maxKeepAliveRequests", "-1");
-
-        tomcat.setBaseDir(baseDir);
-        tomcat.setPort(url.getPort());
-
-        Context context = tomcat.addContext("/", baseDir);
-        Tomcat.addServlet(context, "dispatcher", new DispatcherServlet());
-        // Issue : https://github.com/apache/dubbo/issues/6418
-        // addServletMapping method will be removed since Tomcat 9
-        // context.addServletMapping("/*", "dispatcher");
-        context.addServletMappingDecoded("/*", "dispatcher");
-        ServletManager.getInstance().addServletContext(url.getPort(), 
context.getServletContext());
-
-        // tell tomcat to fail on startup failures.
-        System.setProperty("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE", 
"true");
-
-        try {
-            tomcat.start();
-        } catch (LifecycleException e) {
-            throw new IllegalStateException("Failed to start tomcat server at 
" + url.getAddress(), e);
-        }
-    }
-
-    @Override
-    public void close() {
-        super.close();
-
-        ServletManager.getInstance().removeServletContext(url.getPort());
-
-        try {
-            tomcat.stop();
-            // close port by destroy()
-            tomcat.destroy();
-        } catch (Exception e) {
-            logger.warn(COMMON_FAILED_STOP_HTTP_SERVER, "", "", 
e.getMessage(), e);
-        }
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder
 
b/dubbo-remoting/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder
deleted file mode 100644
index 845124bb43..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.http.HttpBinder
+++ /dev/null
@@ -1,3 +0,0 @@
-servlet=org.apache.dubbo.remoting.http.servlet.ServletHttpBinder
-jetty=org.apache.dubbo.remoting.http.jetty.JettyHttpBinder
-tomcat=org.apache.dubbo.remoting.http.tomcat.TomcatHttpBinder
\ No newline at end of file
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.http.factory.RestClientFactory
 
b/dubbo-remoting/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.http.factory.RestClientFactory
deleted file mode 100644
index 95dd12e072..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.http.factory.RestClientFactory
+++ /dev/null
@@ -1,4 +0,0 @@
-ok-http=org.apache.dubbo.remoting.http.factory.impl.OkHttpClientFactory
-url-connection=org.apache.dubbo.remoting.http.factory.impl.URLConnectionClientFactory
-apache-http-client=org.apache.dubbo.remoting.http.factory.impl.ApacheHttpClientFactory
-
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyHttpBinderTest.java
 
b/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyHttpBinderTest.java
deleted file mode 100644
index 04fc431863..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyHttpBinderTest.java
+++ /dev/null
@@ -1,57 +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.remoting.http.jetty;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.url.component.ServiceConfigURL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.IOException;
-
-import org.apache.http.client.fluent.Request;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-class JettyHttpBinderTest {
-    @Test
-    void shouldAbleHandleRequestForJettyBinder() throws Exception {
-        int port = NetUtils.getAvailablePort();
-        URL url = new ServiceConfigURL(
-                "http", "localhost", port, new String[] 
{Constants.BIND_PORT_KEY, String.valueOf(port)});
-        HttpServer httpServer = new JettyHttpServer(url, new 
HttpHandler<HttpServletRequest, HttpServletResponse>() {
-            @Override
-            public void handle(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
-                response.getWriter().write("Jetty");
-            }
-        });
-
-        String response =
-                
Request.Get(url.toJavaURL().toURI()).execute().returnContent().asString();
-
-        assertThat(response, is("Jetty"));
-
-        httpServer.close();
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapterTest.java
 
b/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapterTest.java
deleted file mode 100644
index e4cbbfd539..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/jetty/JettyLoggerAdapterTest.java
+++ /dev/null
@@ -1,127 +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.remoting.http.jetty;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.logger.Logger;
-import org.apache.dubbo.common.logger.support.FailsafeErrorTypeAwareLogger;
-import org.apache.dubbo.common.url.component.ServiceConfigURL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import org.apache.http.client.fluent.Request;
-import org.eclipse.jetty.util.log.Log;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-class JettyLoggerAdapterTest {
-
-    @Test
-    void testJettyUseDubboLogger() throws Exception {
-        int port = NetUtils.getAvailablePort();
-        URL url = new ServiceConfigURL(
-                "http", "localhost", port, new String[] 
{Constants.BIND_PORT_KEY, String.valueOf(port)});
-        HttpServer httpServer = new JettyHttpServer(url, new 
HttpHandler<HttpServletRequest, HttpServletResponse>() {
-            @Override
-            public void handle(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
-                response.getWriter().write("Jetty is using Dubbo's logger");
-            }
-        });
-        
Request.Get(url.toJavaURL().toURI()).execute().returnContent().asString();
-
-        
assertThat(Log.getLog().getClass().isAssignableFrom(JettyLoggerAdapter.class), 
is(true));
-
-        httpServer.close();
-    }
-
-    @Test
-    void testSuccessLogger() throws Exception {
-        Logger successLogger = mock(Logger.class);
-        Class<?> clazz = 
Class.forName("org.apache.dubbo.remoting.http.jetty.JettyLoggerAdapter");
-        JettyLoggerAdapter jettyLoggerAdapter =
-                (JettyLoggerAdapter) 
clazz.getDeclaredConstructor().newInstance();
-
-        Field loggerField = clazz.getDeclaredField("logger");
-        loggerField.setAccessible(true);
-        loggerField.set(jettyLoggerAdapter, new 
FailsafeErrorTypeAwareLogger(successLogger));
-        jettyLoggerAdapter.setDebugEnabled(true);
-
-        when(successLogger.isDebugEnabled()).thenReturn(true);
-        when(successLogger.isWarnEnabled()).thenReturn(true);
-        when(successLogger.isInfoEnabled()).thenReturn(true);
-
-        jettyLoggerAdapter.warn("warn");
-        jettyLoggerAdapter.info("info");
-        jettyLoggerAdapter.debug("debug");
-
-        verify(successLogger).warn(anyString());
-        verify(successLogger).info(anyString());
-        verify(successLogger).debug(anyString());
-
-        jettyLoggerAdapter.warn(new Exception("warn"));
-        jettyLoggerAdapter.info(new Exception("info"));
-        jettyLoggerAdapter.debug(new Exception("debug"));
-        jettyLoggerAdapter.ignore(new Exception("ignore"));
-
-        jettyLoggerAdapter.warn("warn", new Exception("warn"));
-        jettyLoggerAdapter.info("info", new Exception("info"));
-        jettyLoggerAdapter.debug("debug", new Exception("debug"));
-    }
-
-    @Test
-    void testNewLogger() {
-        JettyLoggerAdapter loggerAdapter = new JettyLoggerAdapter();
-        org.eclipse.jetty.util.log.Logger logger =
-                loggerAdapter.newLogger(this.getClass().getName());
-        
assertThat(logger.getClass().isAssignableFrom(JettyLoggerAdapter.class), 
is(true));
-    }
-
-    @Test
-    void testDebugEnabled() {
-        JettyLoggerAdapter loggerAdapter = new JettyLoggerAdapter();
-        loggerAdapter.setDebugEnabled(true);
-        assertThat(loggerAdapter.isDebugEnabled(), is(true));
-    }
-
-    @Test
-    void testLoggerFormat() throws Exception {
-        Class<?> clazz = 
Class.forName("org.apache.dubbo.remoting.http.jetty.JettyLoggerAdapter");
-        Object newInstance = clazz.getDeclaredConstructor().newInstance();
-
-        Method method = clazz.getDeclaredMethod("format", String.class, 
Object[].class);
-        method.setAccessible(true);
-
-        String print = (String) method.invoke(newInstance, "Hello,{}! I'am 
{}", new String[] {"World", "Jetty"});
-
-        assertThat(print, is("Hello,World! I'am Jetty"));
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/rest/RestClientTest.java
 
b/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/rest/RestClientTest.java
deleted file mode 100644
index 571861ae3d..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/rest/RestClientTest.java
+++ /dev/null
@@ -1,240 +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.remoting.http.rest;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.url.component.ServiceConfigURL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.*;
-import org.apache.dubbo.remoting.http.config.HttpClientConfig;
-import org.apache.dubbo.remoting.http.jetty.JettyHttpServer;
-import org.apache.dubbo.remoting.http.restclient.HttpClientRestClient;
-import org.apache.dubbo.remoting.http.restclient.OKHttpRestClient;
-import org.apache.dubbo.remoting.http.restclient.URLConnectionRestClient;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-public class RestClientTest {
-
-    @Test
-    public void testRestClient() throws Exception {
-        int port = NetUtils.getAvailablePort();
-        URL url = new ServiceConfigURL(
-                "http", "localhost", port, new String[] 
{Constants.BIND_PORT_KEY, String.valueOf(port)});
-        HttpServer httpServer = new JettyHttpServer(url, new 
HttpHandler<HttpServletRequest, HttpServletResponse>() {
-            @Override
-            public void handle(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
-                response.getWriter().write("Jetty");
-            }
-        });
-
-        RequestTemplate requestTemplate = new RequestTemplate(null, "POST", 
"localhost:" + port);
-
-        requestTemplate.addParam("p1", "value1");
-        requestTemplate.addParam("p2", "value2");
-
-        requestTemplate.addParams("p3", Arrays.asList("value3", "value3.1"));
-        requestTemplate.addHeader("test", "dubbo");
-        requestTemplate.addKeepAliveHeader(60);
-
-        requestTemplate.addHeaders("header", Arrays.asList("h1", "h2"));
-
-        requestTemplate.path("/test");
-        requestTemplate.serializeBody("test".getBytes(StandardCharsets.UTF_8));
-
-        RestClient restClient = new OKHttpRestClient(new HttpClientConfig());
-
-        CompletableFuture<RestResult> send = restClient.send(requestTemplate);
-
-        RestResult restResult = send.get();
-
-        assertThat(new String(restResult.getBody()), is("Jetty"));
-
-        restClient = new HttpClientRestClient(new HttpClientConfig());
-
-        send = restClient.send(requestTemplate);
-
-        restResult = send.get();
-
-        assertThat(new String(restResult.getBody()), is("Jetty"));
-
-        restClient = new URLConnectionRestClient(new HttpClientConfig());
-
-        send = restClient.send(requestTemplate);
-
-        restResult = send.get();
-
-        assertThat(new String(restResult.getBody()), is("Jetty"));
-
-        httpServer.close();
-    }
-
-    @Test
-    public void testError() throws Exception {
-        int port = NetUtils.getAvailablePort();
-        URL url = new ServiceConfigURL(
-                "http", "localhost", port, new String[] 
{Constants.BIND_PORT_KEY, String.valueOf(port)});
-        HttpServer httpServer = new JettyHttpServer(url, new 
HttpHandler<HttpServletRequest, HttpServletResponse>() {
-            @Override
-            public void handle(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
-                response.setStatus(500);
-                response.getWriter().write("server error");
-                response.addHeader("Content-Type", "text/html");
-            }
-        });
-
-        RequestTemplate requestTemplate = new RequestTemplate(null, null, 
null);
-
-        requestTemplate.httpMethod("POST");
-        requestTemplate.setAddress("localhost:" + port);
-        requestTemplate.setProtocol("http://";);
-        requestTemplate.addHeader("test", "dubbo");
-        requestTemplate.path("/test");
-        requestTemplate.serializeBody("test".getBytes(StandardCharsets.UTF_8));
-
-        RestClient restClient = new OKHttpRestClient(new HttpClientConfig());
-
-        CompletableFuture<RestResult> send = restClient.send(requestTemplate);
-
-        String error = "Server Error\n" + " error info is: server error";
-        RestResult restResult = send.get();
-
-        String contentType = "text/html;charset=iso-8859-1";
-
-        Assertions.assertEquals(500, restResult.getResponseCode());
-        Assertions.assertEquals(error, restResult.getMessage());
-        Assertions.assertEquals(contentType, restResult.getContentType());
-
-        Map<String, List<String>> headers = restResult.headers();
-        restClient.close();
-
-        restClient = new HttpClientRestClient(new HttpClientConfig());
-        send = restClient.send(requestTemplate);
-        restResult = send.get();
-
-        Assertions.assertEquals(500, restResult.getResponseCode());
-        Assertions.assertEquals(error, restResult.getMessage());
-        Assertions.assertEquals(contentType, restResult.getContentType());
-
-        restClient.close();
-
-        restClient = new URLConnectionRestClient(new HttpClientConfig());
-        send = restClient.send(requestTemplate);
-        restResult = send.get();
-
-        Assertions.assertEquals(500, restResult.getResponseCode());
-        Assertions.assertEquals(error, restResult.getMessage());
-        Assertions.assertEquals(contentType, restResult.getContentType());
-        restClient.close();
-
-        httpServer.close();
-    }
-
-    @Test
-    public void testMethod() {
-
-        RequestTemplate requestTemplate = new RequestTemplate(null, null, 
null);
-
-        requestTemplate.body(new Object(), Object.class);
-
-        Assertions.assertEquals(requestTemplate.getBodyType(), Object.class);
-
-        requestTemplate.addHeader("Content-Length", 1);
-
-        Integer contentLength = requestTemplate.getContentLength();
-
-        Assertions.assertEquals(1, contentLength);
-
-        List<String> strings = Arrays.asList("h1", "h2");
-
-        requestTemplate.addHeaders("header", strings);
-
-        Assertions.assertArrayEquals(
-                strings.toArray(new String[0]),
-                requestTemplate.getHeaders("header").toArray(new String[0]));
-
-        strings = Arrays.asList("p1", "p2");
-
-        requestTemplate.addParams("param", strings);
-
-        Assertions.assertArrayEquals(
-                strings.toArray(new String[0]),
-                requestTemplate.getParam("param").toArray(new String[0]));
-    }
-
-    @Test
-    void testBuildURL() throws Exception {
-        int port = NetUtils.getAvailablePort();
-        URL url = new ServiceConfigURL(
-                "http", "localhost", port, new String[] 
{Constants.BIND_PORT_KEY, String.valueOf(port)});
-        HttpServer httpServer = new JettyHttpServer(url, new 
HttpHandler<HttpServletRequest, HttpServletResponse>() {
-            @Override
-            public void handle(HttpServletRequest request, HttpServletResponse 
response) throws IOException {
-                response.setCharacterEncoding("UTF-8");
-                response.getWriter().write(request.getQueryString());
-            }
-        });
-
-        RequestTemplate requestTemplate = new RequestTemplate(null, "POST", 
"localhost:" + port);
-
-        requestTemplate.addParam("name", "李强");
-        requestTemplate.addParam("age", "18");
-        requestTemplate.path("/hello/world");
-
-        // When using the OKHttpRestClient, parameters will be encoded with 
UTF-8 and appended to the URL
-        RestClient restClient = new OKHttpRestClient(new HttpClientConfig());
-
-        CompletableFuture<RestResult> send = restClient.send(requestTemplate);
-
-        RestResult restResult = send.get();
-
-        assertThat(new String(restResult.getBody()), 
is("name=%E6%9D%8E%E5%BC%BA&age=18"));
-
-        // When using the HttpClientRestClient, parameters will be encoded 
with UTF-8 and appended to the URL
-        restClient = new HttpClientRestClient(new HttpClientConfig());
-
-        send = restClient.send(requestTemplate);
-
-        restResult = send.get();
-
-        assertThat(new String(restResult.getBody()), 
is("name=%E6%9D%8E%E5%BC%BA&age=18"));
-
-        // When using the URLConnectionRestClient, parameters won't be encoded 
and still appended to the URL
-        restClient = new URLConnectionRestClient(new HttpClientConfig());
-
-        send = restClient.send(requestTemplate);
-
-        restResult = send.get();
-
-        assertThat(new String(restResult.getBody(), StandardCharsets.UTF_8), 
is("name=李强&age=18"));
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinderTest.java
 
b/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinderTest.java
deleted file mode 100644
index 75efc28b41..0000000000
--- 
a/dubbo-remoting/dubbo-remoting-http/src/test/java/org/apache/dubbo/remoting/http/tomcat/TomcatHttpBinderTest.java
+++ /dev/null
@@ -1,60 +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.remoting.http.tomcat;
-
-import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.url.component.ServiceConfigURL;
-import org.apache.dubbo.common.utils.NetUtils;
-import org.apache.dubbo.remoting.Constants;
-import org.apache.dubbo.remoting.http.HttpHandler;
-import org.apache.dubbo.remoting.http.HttpServer;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import java.io.IOException;
-
-import org.apache.http.client.fluent.Request;
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.Is.is;
-
-class TomcatHttpBinderTest {
-    @Test
-    void shouldAbleHandleRequestForTomcatBinder() throws Exception {
-        int port = NetUtils.getAvailablePort();
-        URL url = new ServiceConfigURL(
-                "http", "localhost", port, new String[] 
{Constants.BIND_PORT_KEY, String.valueOf(port)});
-
-        HttpServer httpServer = new TomcatHttpBinder()
-                .bind(url, new HttpHandler<HttpServletRequest, 
HttpServletResponse>() {
-                    @Override
-                    public void handle(HttpServletRequest request, 
HttpServletResponse response) throws IOException {
-                        response.getWriter().write("Tomcat");
-                    }
-                });
-
-        String response =
-                
Request.Get(url.toJavaURL().toURI()).execute().returnContent().asString();
-
-        assertThat(response, is("Tomcat"));
-
-        httpServer.close();
-        assertThat(NetUtils.isPortInUsed(port), is(false));
-    }
-}
diff --git 
a/dubbo-remoting/dubbo-remoting-http/src/test/resources/log4j2-test.xml 
b/dubbo-remoting/dubbo-remoting-http/src/test/resources/log4j2-test.xml
deleted file mode 100644
index ba99f52cc2..0000000000
--- a/dubbo-remoting/dubbo-remoting-http/src/test/resources/log4j2-test.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="%d{HH:mm:ss.SSS} |-%highlight{%-5p} [%t] 
%40.40c:%-3L -| 
%m%n%rEx{filters(jdk.internal.reflect,java.lang.reflect,sun.reflect,org.junit,org.mockito)}"
 charset="UTF-8"/>
-        </Console>
-    </Appenders>
-    <Loggers>
-        <Root level="info">
-            <AppenderRef ref="Console"/>
-        </Root>
-    </Loggers>
-</Configuration>
diff --git a/dubbo-remoting/pom.xml b/dubbo-remoting/pom.xml
index 1a1d0cd0c4..e7aca3685e 100644
--- a/dubbo-remoting/pom.xml
+++ b/dubbo-remoting/pom.xml
@@ -29,7 +29,6 @@
   <description>The remoting module of dubbo project</description>
   <modules>
     <module>dubbo-remoting-api</module>
-    <module>dubbo-remoting-http</module>
     <module>dubbo-remoting-netty</module>
     <module>dubbo-remoting-zookeeper-api</module>
     <module>dubbo-remoting-zookeeper</module>
diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml 
b/dubbo-test/dubbo-dependencies-all/pom.xml
index 8bfc74434b..2c802671c7 100644
--- a/dubbo-test/dubbo-dependencies-all/pom.xml
+++ b/dubbo-test/dubbo-dependencies-all/pom.xml
@@ -300,11 +300,6 @@
       <artifactId>dubbo-remoting-api</artifactId>
       <version>${project.version}</version>
     </dependency>
-    <dependency>
-      <groupId>org.apache.dubbo</groupId>
-      <artifactId>dubbo-remoting-http</artifactId>
-      <version>${project.version}</version>
-    </dependency>
     <dependency>
       <groupId>org.apache.dubbo</groupId>
       <artifactId>dubbo-remoting-http12</artifactId>

Reply via email to