You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2023/08/08 09:38:07 UTC

[servicecomb-java-chassis] branch master updated (139871228 -> c67240000)

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

liubao pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git


    from 139871228 [SCB-2799]add ping internal of 3 minutes
     new 78105e577 [SCB-2801]remove unused code for new filter
     new 350636ce9 [SCB-1929]rename new api name PROVIDER/CONSUMER
     new c67240000 [SCB-1929]rename new api name and remove unused code

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../internal/converter/TestSchemaMetaCodec.java    |  10 +-
 .../converter/TestSchemaMetaCodecRestTemplate.java |   4 +-
 .../common/rest/filter/HttpClientFilter.java       |  46 ----
 .../HttpClientFilterBeforeSendRequestExecutor.java |  92 -------
 .../common/rest/filter/HttpServerFilter.java       |  51 ----
 ...HttpServerFilterBeforeSendResponseExecutor.java |  92 -------
 .../rest/filter/inner/ClientRestArgsFilter.java    |  62 -----
 .../rest/filter/inner/RestServerCodecFilter.java   |  10 +-
 .../rest/filter/inner/ServerRestArgsFilter.java    |  94 -------
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 .../rest/filter/HttpClientFilterBaseForTest.java   |  41 ---
 .../rest/filter/HttpServerFilterBaseForTest.java   |  33 ---
 .../common/rest/filter/TestHttpClientFilter.java   |  33 ---
 .../common/rest/filter/TestHttpServerFilter.java   |  56 ----
 ...HttpServerFilterBeforeSendResponseExecutor.java |  71 -----
 .../filter/inner/TestServerRestArgsFilter.java     |  66 -----
 .../org/apache/servicecomb/core/Invocation.java    |   4 +-
 .../org/apache/servicecomb/core/SCBEngine.java     |   5 +-
 .../servicecomb/core/filter/ConsumerFilter.java    |   2 +-
 .../core/filter/CoreFilterConfiguration.java       |  17 +-
 .../org/apache/servicecomb/core/filter/Filter.java |  26 +-
 .../core/filter/FilterChainsManager.java           |  18 +-
 .../apache/servicecomb/core/filter/FilterNode.java |   2 +-
 .../core/filter/InvocationFilterChains.java        |  10 +-
 .../{ProducerFilter.java => ProviderFilter.java}   |   6 +-
 .../core/filter/impl/ParameterValidatorFilter.java |  21 +-
 ...ionFilter.java => ProviderOperationFilter.java} |   8 +-
 .../core/filter/impl/ScheduleFilter.java           |   8 +-
 .../core/filter/impl/SimpleLoadBalanceFilter.java  | 175 ------------
 .../servicecomb/core/filter/SimpleRetryFilter.java |   2 +-
 .../filter/impl/ProducerOperationFilterTest.java   |   2 +-
 .../filter/impl/SimpleLoadBalanceFilterTest.java   |  76 ------
 .../service/encrypt/filter/DecodeBodyFilter.java   |   2 +-
 .../encrypt/filter/EdgeSignatureRequestFilter.java |   2 +-
 .../filter/EdgeSignatureResponseFilter.java        |   2 +-
 .../edge/service/encrypt/filter/UserIdFilter.java  |   2 +-
 .../demo/edge/service/handler/AuthHandler.java     |   9 +-
 ...servicecomb.common.rest.filter.HttpServerFilter |  21 --
 .../jaxrs/server/JaxrsDemoHttpServerFilter.java    |  49 ----
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 demo/demo-signature/pom.xml                        |  40 ---
 .../demo/signature/ClientSignature.java            |  61 -----
 .../demo/signature/ServerSignature.java            |  54 ----
 .../servicecomb/demo/signature/SignatureUtils.java |  80 ------
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 .../springboot/pojo/server/handler/MyHandler.java  |   8 +-
 demo/demo-springmvc/springmvc-client/pom.xml       |   4 -
 demo/demo-springmvc/springmvc-server/pom.xml       |   4 -
 .../demo/springmvc/filter/ProviderTestFilter.java  |   8 +-
 demo/pom.xml                                       |   6 -
 .../edge/core/EdgeAddHeaderClientFilter.java       | 104 --------
 .../servicecomb/edge/core/EdgeAddHeaderFilter.java |  65 ++++-
 .../edge/core/EdgeServerCodecFilter.java           |   6 +-
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 .../faultinjection/ConsumerAbortFaultFilter.java   |   2 +-
 .../faultinjection/ConsumerDelayFaultFilter.java   |   2 +-
 .../servicecomb/qps/ConsumerFlowControlFilter.java |   2 +-
 .../servicecomb/qps/ProviderFlowControlFilter.java |   8 +-
 .../governance/ConsumerInstanceBulkheadFilter.java |   2 +-
 .../ConsumerInstanceIsolationFilter.java           |   2 +-
 .../handler/governance/ProviderBulkheadFilter.java |   8 +-
 .../governance/ProviderCircuitBreakerFilter.java   |   8 +-
 .../governance/ProviderRateLimitingFilter.java     |   8 +-
 .../servicecomb/loadbalance/LoadBalanceFilter.java |   2 +-
 .../consumer/ConsumerAuthFilter.java               |   2 +-
 .../provider/ProviderAuthFilter.java               |   8 +-
 .../router/custom/RouterAddHeaderFilter.java       |   8 +-
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 .../tracing/zipkin/ZipkinTracingFilter.java        |   4 +-
 .../metrics/core/publish/PublishModelFactory.java  |   2 +-
 .../core/TestInvocationMetersInitializer.java      |  56 ++--
 .../publish/TestInvocationPublishModelFactory.java |   2 +-
 .../swagger/invocation/InvocationType.java         |   2 +-
 .../org/apache/servicecomb/core/TestResponse.java  |   6 +-
 .../transport/highway/HighwayClientFilter.java     |   4 +-
 .../highway/HighwayServerCodecFilter.java          |  10 +-
 .../rest/client/RestClientCodecFilter.java         |   4 +-
 .../rest/client/RestClientSenderFilter.java        |   4 +-
 .../rest/client/http/DefaultHttpClientFilter.java  | 148 -----------
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 .../rest/client/RestClientCodecFilterTest.java     |  63 -----
 .../rest/client/RestClientDecoderTest.java         | 100 -------
 .../rest/client/RestClientEncoderTest.java         | 170 ------------
 .../transport/rest/client/RestClientTestBase.java  |  98 -------
 .../RestClientTransportContextFactoryTest.java     | 107 --------
 .../client/http/TestDefaultHttpClientFilter.java   | 293 ---------------------
 .../rest/servlet/ServletRestDispatcher.java        |  14 +-
 89 files changed, 233 insertions(+), 2730 deletions(-)
 delete mode 100644 common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilter.java
 delete mode 100644 common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBeforeSendRequestExecutor.java
 delete mode 100644 common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilter.java
 delete mode 100644 common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
 delete mode 100644 common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java
 delete mode 100644 common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java
 delete mode 100644 common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
 delete mode 100644 common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
 delete mode 100644 common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBaseForTest.java
 delete mode 100644 common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBaseForTest.java
 delete mode 100644 common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpClientFilter.java
 delete mode 100644 common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilter.java
 delete mode 100644 common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilterBeforeSendResponseExecutor.java
 delete mode 100644 common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/TestServerRestArgsFilter.java
 rename core/src/main/java/org/apache/servicecomb/core/filter/{ProducerFilter.java => ProviderFilter.java} (84%)
 rename core/src/main/java/org/apache/servicecomb/core/filter/impl/{ProducerOperationFilter.java => ProviderOperationFilter.java} (92%)
 delete mode 100644 core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java
 delete mode 100644 core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java
 delete mode 100644 demo/demo-edge/edge-service/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
 delete mode 100644 demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsDemoHttpServerFilter.java
 delete mode 100644 demo/demo-jaxrs/jaxrs-server/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
 delete mode 100644 demo/demo-signature/pom.xml
 delete mode 100644 demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ClientSignature.java
 delete mode 100644 demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ServerSignature.java
 delete mode 100644 demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/SignatureUtils.java
 delete mode 100644 demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
 delete mode 100644 demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
 delete mode 100644 edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java
 delete mode 100644 edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
 delete mode 100644 handlers/handler-router/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
 delete mode 100644 transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/DefaultHttpClientFilter.java
 delete mode 100644 transports/transport-rest/transport-rest-client/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
 delete mode 100644 transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.java
 delete mode 100644 transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.java
 delete mode 100644 transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.java
 delete mode 100644 transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
 delete mode 100644 transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java
 delete mode 100644 transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestDefaultHttpClientFilter.java


[servicecomb-java-chassis] 03/03: [SCB-1929]rename new api name and remove unused code

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit c672400000feb8ad1dceccea6b367015f32e1fcc
Author: liubao <bi...@qq.com>
AuthorDate: Tue Aug 8 16:04:13 2023 +0800

    [SCB-1929]rename new api name and remove unused code
---
 .../rest/filter/inner/RestServerCodecFilter.java   |   4 +-
 .../servicecomb/core/filter/ConsumerFilter.java    |   2 +-
 .../core/filter/CoreFilterConfiguration.java       |   7 -
 .../org/apache/servicecomb/core/filter/Filter.java |   6 +-
 .../core/filter/FilterChainsManager.java           |   4 +-
 .../apache/servicecomb/core/filter/FilterNode.java |   2 +-
 .../core/filter/InvocationFilterChains.java        |   2 +-
 .../servicecomb/core/filter/ProviderFilter.java    |   2 +-
 .../core/filter/impl/ParameterValidatorFilter.java |  15 +-
 .../core/filter/impl/ProviderOperationFilter.java  |   2 +-
 .../core/filter/impl/ScheduleFilter.java           |   2 +-
 .../core/filter/impl/SimpleLoadBalanceFilter.java  | 175 ---------------------
 .../servicecomb/core/filter/SimpleRetryFilter.java |   2 +-
 .../filter/impl/SimpleLoadBalanceFilterTest.java   |  76 ---------
 .../demo/edge/service/handler/AuthHandler.java     |   2 +-
 .../springboot/pojo/server/handler/MyHandler.java  |   2 +-
 .../demo/springmvc/filter/ProviderTestFilter.java  |   2 +-
 .../servicecomb/edge/core/EdgeAddHeaderFilter.java |   4 +-
 .../edge/core/EdgeServerCodecFilter.java           |   6 +-
 .../faultinjection/ConsumerAbortFaultFilter.java   |   2 +-
 .../faultinjection/ConsumerDelayFaultFilter.java   |   2 +-
 .../servicecomb/qps/ConsumerFlowControlFilter.java |   2 +-
 .../servicecomb/qps/ProviderFlowControlFilter.java |   2 +-
 .../governance/ConsumerInstanceBulkheadFilter.java |   2 +-
 .../ConsumerInstanceIsolationFilter.java           |   2 +-
 .../handler/governance/ProviderBulkheadFilter.java |   2 +-
 .../governance/ProviderCircuitBreakerFilter.java   |   2 +-
 .../governance/ProviderRateLimitingFilter.java     |   2 +-
 .../servicecomb/loadbalance/LoadBalanceFilter.java |   2 +-
 .../consumer/ConsumerAuthFilter.java               |   2 +-
 .../provider/ProviderAuthFilter.java               |   2 +-
 .../router/custom/RouterAddHeaderFilter.java       |   4 +-
 .../core/TestInvocationMetersInitializer.java      |  54 +++----
 .../transport/highway/HighwayClientFilter.java     |   4 +-
 .../highway/HighwayServerCodecFilter.java          |   4 +-
 .../rest/client/RestClientCodecFilter.java         |   4 +-
 .../rest/client/RestClientSenderFilter.java        |   4 +-
 .../rest/client/RestClientCodecFilterTest.java     |  63 --------
 .../rest/client/RestClientDecoderTest.java         | 100 ------------
 .../rest/client/RestClientEncoderTest.java         | 170 --------------------
 .../transport/rest/client/RestClientTestBase.java  |  98 ------------
 .../RestClientTransportContextFactoryTest.java     | 107 -------------
 42 files changed, 79 insertions(+), 874 deletions(-)

diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
index 38e91a19d..0415fba17 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
@@ -64,13 +64,13 @@ public class RestServerCodecFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     // almost time, should be the first filter.
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 2000;
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.RESTFUL.equals(transport);
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java
index 899286787..9f89c7025 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java
@@ -23,7 +23,7 @@ import org.apache.servicecomb.swagger.invocation.InvocationType;
 public interface ConsumerFilter extends Filter {
   @Nonnull
   @Override
-  default boolean isEnabledForInvocationType(InvocationType invocationType) {
+  default boolean enabledForInvocationType(InvocationType invocationType) {
     return invocationType == InvocationType.CONSUMER;
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java b/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
index d03b69753..23bc14eac 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
@@ -24,13 +24,6 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration
 public class CoreFilterConfiguration {
-  //TODO: need remove all component scan or will cause bean conflict with load balance module
-//  @Bean
-//  @ConditionalOnMissingBean(name = "loadBalanceFilter")
-//  public ConsumerFilter loadBalanceFilter() {
-//    return new SimpleLoadBalanceFilter();
-//  }
-
   @Bean
   public ProviderFilter producerOperationFilter() {
     return new ProviderOperationFilter();
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java b/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
index e84302808..5c58aca97 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
@@ -54,15 +54,15 @@ public interface Filter {
 
   int CONSUMER_LOAD_BALANCE_ORDER = 0;
 
-  default boolean isEnabledForInvocationType(InvocationType invocationType) {
+  default boolean enabledForInvocationType(InvocationType invocationType) {
     return true;
   }
 
-  default boolean isEnabledForTransport(String transport) {
+  default boolean enabledForTransport(String transport) {
     return true;
   }
 
-  default boolean isEnabledForMicroservice(String application, String serviceName) {
+  default boolean enabledForMicroservice(String application, String serviceName) {
     return true;
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java b/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
index 033208219..4f7392f86 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
@@ -33,11 +33,11 @@ public class FilterChainsManager {
   @Autowired
   public FilterChainsManager addFilters(List<Filter> filters) {
     for (Filter filter : filters) {
-      if (filter.isEnabledForInvocationType(InvocationType.CONSUMER)) {
+      if (filter.enabledForInvocationType(InvocationType.CONSUMER)) {
         consumerChains.addFilter(filter);
       }
 
-      if (filter.isEnabledForInvocationType(InvocationType.PROVIDER)) {
+      if (filter.enabledForInvocationType(InvocationType.PROVIDER)) {
         producerChains.addFilter(filter);
       }
     }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java b/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java
index fa9ec9d1a..b5cb63c01 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java
@@ -62,7 +62,7 @@ public class FilterNode {
   }
 
   public CompletableFuture<Response> onFilter(Invocation invocation) {
-    if (!filter.isEnabledForTransport(invocation.getTransportName())) {
+    if (!filter.enabledForTransport(invocation.getTransportName())) {
       return nextNode.onFilter(invocation);
     }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
index d64534ea4..064e4471b 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
@@ -48,7 +48,7 @@ public class InvocationFilterChains {
     FilterNode filterNode = microserviceChains.get(serviceName);
     if (filterNode == null) {
       List<Filter> serviceFilters = filters.entrySet().stream()
-          .filter(e -> e.getValue().isEnabledForMicroservice(application, serviceName))
+          .filter(e -> e.getValue().enabledForMicroservice(application, serviceName))
           .map(e -> e.getValue())
           .collect(Collectors.toList());
       serviceFilters.sort(Comparator.comparingInt(a -> a.getOrder(invocationType, application, serviceName)));
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
index bfac61a03..49ba1e481 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
@@ -23,7 +23,7 @@ import org.apache.servicecomb.swagger.invocation.InvocationType;
 public interface ProviderFilter extends Filter {
   @Nonnull
   @Override
-  default boolean isEnabledForInvocationType(InvocationType invocationType) {
+  default boolean enabledForInvocationType(InvocationType invocationType) {
     return invocationType == InvocationType.PROVIDER;
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
index 351b06d1f..03efe04ad 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
@@ -21,12 +21,6 @@ import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 
 import javax.annotation.Nonnull;
-import jakarta.validation.ConstraintViolation;
-import jakarta.validation.ConstraintViolationException;
-import jakarta.validation.Validation;
-import jakarta.validation.ValidatorFactory;
-import jakarta.validation.executable.ExecutableValidator;
-import jakarta.validation.groups.Default;
 
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
@@ -46,6 +40,13 @@ import org.springframework.beans.factory.InitializingBean;
 
 import com.netflix.config.DynamicPropertyFactory;
 
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
+import jakarta.validation.Validation;
+import jakarta.validation.ValidatorFactory;
+import jakarta.validation.executable.ExecutableValidator;
+import jakarta.validation.groups.Default;
+
 public class ParameterValidatorFilter implements ProviderFilter, InitializingBean {
   private static final Logger LOGGER = LoggerFactory.getLogger(ParameterValidatorFilter.class);
 
@@ -62,7 +63,7 @@ public class ParameterValidatorFilter implements ProviderFilter, InitializingBea
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 1000;
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
index d1b07bff0..1e450ebf4 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
@@ -42,7 +42,7 @@ public class ProviderOperationFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     // almost time, should be the last filter.
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 2000;
   }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
index 7f08061fb..1f2c119c2 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
@@ -40,7 +40,7 @@ public class ScheduleFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER;
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java
deleted file mode 100644
index 2a0c1029f..000000000
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java
+++ /dev/null
@@ -1,175 +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.servicecomb.core.filter.impl;
-
-import static org.apache.servicecomb.core.exception.ExceptionCodes.LB_ADDRESS_NOT_FOUND;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.annotation.Nonnull;
-
-import org.apache.servicecomb.core.Endpoint;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.exception.Exceptions;
-import org.apache.servicecomb.core.filter.ConsumerFilter;
-import org.apache.servicecomb.core.filter.Filter;
-import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.governance.RetryContext;
-import org.apache.servicecomb.foundation.common.cache.VersionedCache;
-import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
-import org.apache.servicecomb.registry.discovery.DiscoveryContext;
-import org.apache.servicecomb.registry.discovery.DiscoveryTree;
-import org.apache.servicecomb.swagger.invocation.InvocationType;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * build-in round robin LB, for demo scenes
- */
-public class SimpleLoadBalanceFilter implements ConsumerFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(SimpleLoadBalanceFilter.class);
-
-  public static final String NAME = "simple-load-balance";
-
-  private class Service {
-    public static final String CONTEXT_KEY_LAST_SERVER = "x-context-last-server";
-
-    // Enough times to make sure to choose a different server in high volume.
-    private static final int COUNT = 17;
-
-    private final String name;
-
-    // key is grouping filter qualified name
-    private final Map<String, AtomicInteger> indexMap = new ConcurrentHashMapEx<>();
-
-    public Service(String name) {
-      this.name = name;
-    }
-
-    public String getName() {
-      return name;
-    }
-
-    public Endpoint selectEndpoint(Invocation invocation) {
-      DiscoveryContext context = new DiscoveryContext();
-      context.setInputParameters(invocation);
-      VersionedCache endpointsVersionedCache = discoveryTree.discovery(context,
-          invocation.getAppId(),
-          invocation.getMicroserviceName());
-      if (endpointsVersionedCache.isEmpty()) {
-        String msg = "No available address found.";
-        LOGGER.error("{} microserviceName={}, discoveryGroupName={}",
-            msg,
-            invocation.getMicroserviceName(),
-            endpointsVersionedCache.name());
-        throw Exceptions.consumer(LB_ADDRESS_NOT_FOUND, msg);
-      }
-
-      return selectEndpoint(invocation, endpointsVersionedCache.name(), endpointsVersionedCache.data());
-    }
-
-    private Endpoint selectEndpoint(Invocation invocation, String key, List<Endpoint> endpoints) {
-      RetryContext retryContext = invocation.getLocalContext(RetryContext.RETRY_CONTEXT);
-      if (retryContext == null) {
-        return chooseEndpoint(invocation, key, endpoints);
-      }
-
-      if (!retryContext.isRetry()) {
-        Endpoint server = chooseEndpoint(invocation, key, endpoints);
-        invocation.addLocalContext(CONTEXT_KEY_LAST_SERVER, server);
-        return server;
-      }
-
-      Endpoint lastServer = invocation.getLocalContext(CONTEXT_KEY_LAST_SERVER);
-      Endpoint nextServer = lastServer;
-      if (!retryContext.trySameServer()) {
-        for (int i = 0; i < COUNT; i++) {
-          Endpoint s = chooseEndpoint(invocation, key, endpoints);
-          if (s == null) {
-            break;
-          }
-          if (!s.equals(nextServer)) {
-            nextServer = s;
-            break;
-          }
-        }
-      }
-
-      LOGGER.info("operation failed {}, retry to instance [{}], last instance [{}], trace id {}",
-          invocation.getMicroserviceQualifiedName(),
-          nextServer == null ? "" : nextServer.getEndpoint(),
-          lastServer == null ? "" : lastServer.getEndpoint(),
-          invocation.getTraceId());
-      invocation.addLocalContext(CONTEXT_KEY_LAST_SERVER, nextServer);
-      return nextServer;
-    }
-
-    private Endpoint chooseEndpoint(Invocation invocation, String key, List<Endpoint> endpoints) {
-      AtomicInteger index = indexMap.computeIfAbsent(key, name -> {
-        LOGGER.info("Create loadBalancer for {}.", name);
-        return new AtomicInteger();
-      });
-      LOGGER.debug("invocation {} use discoveryGroup {}.",
-          invocation.getMicroserviceQualifiedName(),
-          key);
-
-      int idx = Math.abs(index.getAndIncrement());
-      idx = idx % endpoints.size();
-
-      return endpoints.get(idx);
-    }
-  }
-
-
-  private final Map<String, Service> servicesByName = new ConcurrentHashMapEx<>();
-
-  private DiscoveryTree discoveryTree;
-
-  @Autowired
-  public void setDiscoveryTree(DiscoveryTree discoveryTree) {
-    this.discoveryTree = discoveryTree;
-  }
-
-  @Nonnull
-  @Override
-  public String getName() {
-    return NAME;
-  }
-
-  @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.CONSUMER_LOAD_BALANCE_ORDER;
-  }
-
-  @Override
-  public CompletableFuture<Response> onFilter(Invocation invocation, FilterNode nextNode) {
-    if (invocation.getEndpoint() != null) {
-      invocation.addLocalContext(RetryContext.RETRY_LOAD_BALANCE, false);
-      return nextNode.onFilter(invocation);
-    }
-    invocation.addLocalContext(RetryContext.RETRY_LOAD_BALANCE, true);
-    Service service = servicesByName.computeIfAbsent(invocation.getMicroserviceName(), Service::new);
-    Endpoint endpoint = service.selectEndpoint(invocation);
-    invocation.setEndpoint(endpoint);
-    return nextNode.onFilter(invocation);
-  }
-}
diff --git a/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java b/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java
index 059277847..b162bfb1f 100644
--- a/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java
+++ b/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java
@@ -36,7 +36,7 @@ public class SimpleRetryFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 900;
   }
 
diff --git a/core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java b/core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java
deleted file mode 100644
index 08c1eda3f..000000000
--- a/core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java
+++ /dev/null
@@ -1,76 +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.servicecomb.core.filter.impl;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.servicecomb.core.Endpoint;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.registry.discovery.DiscoveryContext;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.junit.Test;
-
-import mockit.Expectations;
-import mockit.Injectable;
-import mockit.Mocked;
-import mockit.Verifications;
-
-public class SimpleLoadBalanceFilterTest {
-  SimpleLoadBalanceFilter filter = new SimpleLoadBalanceFilter();
-
-  @Injectable
-  Invocation invocation;
-
-  @Injectable
-  Endpoint endpoint;
-
-  @Mocked
-  DiscoveryContext discoveryContext;
-
-  @Injectable
-  FilterNode nextNode;
-
-  @Test
-  public void should_invoke_next_directly_when_invocation_already_has_endpoint()
-      throws ExecutionException, InterruptedException {
-    Response response = Response.ok("ok");
-    new Expectations() {
-      {
-        invocation.getEndpoint();
-        result = endpoint;
-
-        nextNode.onFilter(invocation);
-        result = CompletableFuture.completedFuture(response);
-      }
-    };
-
-    Response result = filter.onFilter(invocation, nextNode).get();
-
-    assertThat(result).isSameAs(response);
-    new Verifications() {
-      {
-        discoveryContext.setInputParameters(invocation);
-        times = 0;
-      }
-    };
-  }
-}
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
index ddc81adf8..a7838f2f8 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
@@ -52,7 +52,7 @@ public class AuthHandler implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForMicroservice(String application, String serviceName) {
+  public boolean enabledForMicroservice(String application, String serviceName) {
     if ("auth".equals(serviceName)) {
       return false;
     }
diff --git a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
index 615afab42..1f7673d6a 100644
--- a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
+++ b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
@@ -40,7 +40,7 @@ public class MyHandler implements ProviderFilter {
   public static final String SPLITPARAM_RESPONSE_USER_SUFFIX = "(modified by MyHandler)";
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 100;
   }
 
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
index 63a1537ec..936f26838 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class ProviderTestFilter implements ProviderFilter {
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1800;
   }
 
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
index 333a36edf..0a55d51dd 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
@@ -81,12 +81,12 @@ public class EdgeAddHeaderFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return enabled;
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1991;
   }
 
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
index c6b01d614..416672ea5 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
@@ -39,18 +39,18 @@ public class EdgeServerCodecFilter extends RestServerCodecFilter {
 
   @Nonnull
   @Override
-  public boolean isEnabledForInvocationType(InvocationType invocationType) {
+  public boolean enabledForInvocationType(InvocationType invocationType) {
     return invocationType == InvocationType.CONSUMER;
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     // For edge service, this filter executed before load balancer and transport is always null.
     return true;
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 2000;
   }
 
diff --git a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java
index 5c2b9d4e8..25c8f7799 100644
--- a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java
+++ b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java
@@ -39,7 +39,7 @@ public class ConsumerAbortFaultFilter implements ConsumerFilter {
   public static final String ABORTED_ERROR_MSG = "aborted by fault inject";
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1020;
   }
 
diff --git a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java
index 97e782fc4..7503be81f 100644
--- a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java
+++ b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java
@@ -36,7 +36,7 @@ public class ConsumerDelayFaultFilter implements ConsumerFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerDelayFaultFilter.class);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1030;
   }
 
diff --git a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
index af259bb13..ac848c56a 100644
--- a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
+++ b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
@@ -41,7 +41,7 @@ public class ConsumerFlowControlFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 1990;
   }
 
diff --git a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
index 43fbc0786..8d0fda11a 100644
--- a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
+++ b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
@@ -37,7 +37,7 @@ public class ProviderFlowControlFilter implements ProviderFilter {
   private final QpsControllerManager qpsControllerMgr = new QpsControllerManager(true);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1990;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java
index f811570e7..33db08c5a 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java
@@ -55,7 +55,7 @@ public class ConsumerInstanceBulkheadFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1060;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java
index d636395a2..a2eca3457 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java
@@ -65,7 +65,7 @@ public class ConsumerInstanceIsolationFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1050;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
index 552c5c9e2..4bfaf3af9 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
@@ -54,7 +54,7 @@ public class ProviderBulkheadFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1880;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
index dff10b9e7..a85b53372 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
@@ -54,7 +54,7 @@ public class ProviderCircuitBreakerFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1890;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
index 69c5bc4ce..f72e2c279 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
@@ -54,7 +54,7 @@ public class ProviderRateLimitingFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1900;
   }
 
diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java
index 149097119..f37388962 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java
@@ -114,7 +114,7 @@ public class LoadBalanceFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER;
   }
 
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java
index f9b57f5c7..fe3cc778c 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java
@@ -42,7 +42,7 @@ public class ConsumerAuthFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1010;
   }
 
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
index 0b3dab471..51ef28eb5 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
@@ -41,7 +41,7 @@ public class ProviderAuthFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 1010;
   }
 
diff --git a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
index e40ee7dbd..d4c1fbe1c 100644
--- a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
+++ b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
@@ -104,13 +104,13 @@ public class RouterAddHeaderFilter implements Filter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return ProviderFilter.PROVIDER_SCHEDULE_FILTER_ORDER - 1970;
   }
 
   @Nonnull
   @Override
-  public boolean isEnabledForInvocationType(InvocationType invocationType) {
+  public boolean enabledForInvocationType(InvocationType invocationType) {
     // enable for both edge and producer
     return true;
   }
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
index fc6e7e090..a25942cf5 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
@@ -286,32 +286,32 @@ public class TestInvocationMetersInitializer {
     tree.from(registry.iterator(), new MeasurementGroupConfig(MeterInvocationConst.INVOCATION_NAME));
     List<Measurement> measurements = tree.findChild(MeterInvocationConst.INVOCATION_NAME).getMeasurements();
     int i = 0;
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=total:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=total:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=total:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=prepare:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=prepare:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=prepare:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=queue:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=queue:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=queue:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=execution:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=execution:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=execution:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=producer_send_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=producer_send_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=producer_send_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=total:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=total:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=total:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=prepare:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=prepare:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=prepare:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=queue:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=queue:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=queue:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=execution:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=execution:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=execution:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=producer_send_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=producer_send_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=producer_send_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
   }
 }
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java
index 5b7de34dd..6a35299e7 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java
@@ -48,12 +48,12 @@ public class HighwayClientFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.HIGHWAY.equals(transport);
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 2000;
   }
 
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
index 9d894e21c..6339c9cf3 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
@@ -46,13 +46,13 @@ public class HighwayServerCodecFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     // almost time, should be the first filter.
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 2000;
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.HIGHWAY.equals(transport);
   }
 
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java
index aceab8316..a9dc6c673 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java
@@ -49,12 +49,12 @@ public class RestClientCodecFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.RESTFUL.equals(transport);
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1990;
   }
 
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java
index 854ba5ed3..026d04f46 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java
@@ -38,12 +38,12 @@ public class RestClientSenderFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.RESTFUL.equals(transport);
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 2000;
   }
 
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.java
deleted file mode 100644
index 893c2a80a..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.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.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientCodecFilterTest extends RestClientTestBase {
-//  RestClientEncoder encoder = new RestClientEncoder();
-//
-//  RestClientDecoder decoder = new RestClientDecoder();
-//
-//  RestClientCodecFilter codecFilter = new RestClientCodecFilter()
-//      .setTransportContextFactory(factory)
-//      .setEncoder(encoder)
-//      .setDecoder(decoder);
-//
-//  @Test
-//  void should_record_start_and_finish_client_filters_time_when_succeed() {
-//    init("query", null, false);
-//
-//    Response response = codecFilter.onFilter(invocation, FilterNode.EMPTY).join();
-//
-//    assertThat(response.getStatusCode()).isEqualTo(Status.OK.getStatusCode());
-//    assertThat(invocation.getInvocationStageTrace().getStartClientFiltersRequest()).isNotEqualTo(0);
-//    assertThat(invocation.getInvocationStageTrace().getFinishClientFiltersResponse()).isNotEqualTo(0);
-//  }
-//
-//  @Test
-//  void should_record_start_and_finish_client_filters_time_when_failed() {
-//    init("query", null, false);
-//
-//    RuntimeExceptionWithoutStackTrace mockThrowable = new RuntimeExceptionWithoutStackTrace("mock filter failed");
-//    FilterNode filterNode = new FilterNode(null) {
-//      @Override
-//      public CompletableFuture<Response> onFilter(Invocation invocation) {
-//        return AsyncUtils.completeExceptionally(mockThrowable);
-//      }
-//    };
-//
-//    Throwable throwable = catchThrowable(() -> codecFilter.onFilter(invocation, filterNode).join());
-//
-//    assertThat(throwable.getCause()).isSameAs(mockThrowable);
-//    assertThat(invocation.getInvocationStageTrace().getStartClientFiltersRequest()).isNotEqualTo(0);
-//    assertThat(invocation.getInvocationStageTrace().getFinishClientFiltersResponse()).isNotEqualTo(0);
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.java
deleted file mode 100644
index f4b35dacb..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.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.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientDecoderTest extends RestClientTestBase {
-//  static RestClientDecoder decoder = new RestClientDecoder();
-//
-//  @Test
-//  void should_decode_by_json_when_no_content_type() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("\"result\""));
-//    decoder.decode(invocation, response);
-//
-//    assertThat(response.<String>getResult()).isEqualTo("result");
-//  }
-//
-//  @Test
-//  void should_decode_2xx_body() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("\"result\""))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//    decoder.decode(invocation, response);
-//
-//    assertThat(response.<String>getResult()).isEqualTo("result");
-//  }
-//
-//  @Test
-//  void should_throw_exception_when_decode_invalid_2xx_body() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("result"))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//    Throwable throwable = catchThrowable(() -> decoder.decode(invocation, response));
-//
-//    assertThat(throwable.toString()).isEqualTo(
-//        "InvocationException: code=400;msg=CommonExceptionData{code='scb_rest_client.40000002', message='failed to decode success response body.', dynamic={}}");
-//  }
-//
-//  @Test
-//  void should_decode_by_content_type_with_charset() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("\"result\""))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON + ";charset=UTF-8");
-//    decoder.decode(invocation, response);
-//
-//    assertThat(response.<String>getResult()).isEqualTo("result");
-//  }
-//
-//  @Test
-//  void should_throw_exception_when_decode_not_2xx_response() {
-//    init("query", null, false);
-//
-//    CommonExceptionData data = new CommonExceptionData("error");
-//    String json = Json.encodePrettily(data);
-//    Response response = Response
-//        .status(BAD_REQUEST)
-//        .entity(Buffer.buffer(json))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//
-//    Throwable throwable = catchThrowable(() -> decoder.decode(invocation, response));
-//
-//    assertThat(throwable.toString()).isEqualTo("InvocationException: code=400;msg={message=error}");
-//  }
-//
-//  @Test
-//  void should_throw_exception_when_decode_invalid_not_2xx_body() {
-//    init("query", null, false);
-//
-//    Response response = Response
-//        .status(BAD_REQUEST)
-//        .entity(Buffer.buffer("result"))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//    Throwable throwable = catchThrowable(() -> decoder.decode(invocation, response));
-//
-//    assertThat(throwable.toString()).isEqualTo(
-//        "InvocationException: code=400;msg=CommonExceptionData{code='scb_rest_client.40000003', message='failed to decode fail response body.', dynamic={}}");
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.java
deleted file mode 100644
index 3d0ea1ba8..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.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.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientEncoderTest extends RestClientTestBase {
-//  RestClientEncoder encoder = new RestClientEncoder();
-//
-//  void init(String operationId, Map<String, Object> swaggerArgs) {
-//    init(operationId, swaggerArgs, false);
-//  }
-//
-//  @Test
-//  void should_encode_header_parameter() {
-//    init("header", ImmutableMap.of("header", "value"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get("header"))
-//        .isEqualTo("value");
-//  }
-//
-//  @Test
-//  void should_encode_servicecomb_headers() {
-//    init("header", ImmutableMap.of("header", "value"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().toString())
-//        .isEqualTo("header: value\n"
-//            + "x-cse-target-microservice: defaultMicroservice\n"
-//            + "x-cse-context: {\"x-cse-src-microservice\":\"defaultMicroservice\"}\n");
-//  }
-//
-//  @Test
-//  void should_not_encode_servicecomb_headers_when_invoke_3rd_service_and_filter_servicecomb_headers() {
-//    init("header", ImmutableMap.of("header", "value"));
-//    referenceConfig.setThirdPartyService(true);
-//    operationMeta.getConfig().setClientRequestHeaderFilterEnabled(true);
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().toString())
-//        .isEqualTo("header: value\n");
-//  }
-//
-//  @Test
-//  void should_encode_servicecomb_headers_when_invoke_3rd_service_and_not_filter_servicecomb_headers() {
-//    init("header", ImmutableMap.of("header", "value"));
-//    referenceConfig.setThirdPartyService(true);
-//    operationMeta.getConfig().setClientRequestHeaderFilterEnabled(false);
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().toString())
-//        .isEqualTo("header: value\n"
-//            + "x-cse-target-microservice: defaultMicroservice\n"
-//            + "x-cse-context: {\"x-cse-src-microservice\":\"defaultMicroservice\"}\n");
-//  }
-//
-//  @Test
-//  void should_encode_cookie_parameter() {
-//    init("cookie", ImmutableMap.of("cookie1", "v1", "cookie2", "v2"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get(HttpHeaders.COOKIE))
-//        .isEqualTo("cookie1=v1; cookie2=v2");
-//  }
-//
-//  @Test
-//  void should_encode_body_parameter() {
-//    init("body", ImmutableMap.of("body", "value"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(transportContext.getRequestParameters().getBodyBuffer().toString())
-//        .isEqualTo("\"value\"");
-//  }
-//
-//  @Test
-//  void should_encode_form_attribute_parameter() {
-//    init("form", ImmutableMap.of("form1", "v1", "form2", "v2"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get(HttpHeaders.CONTENT_TYPE))
-//        .isEqualTo(MediaType.APPLICATION_FORM_URLENCODED);
-//    assertThat(transportContext.getRequestParameters().getBodyBuffer().toString())
-//        .isEqualTo("form1=v1&form2=v2");
-//  }
-//
-//  @Test
-//  void should_not_encode_null_form_attribute() {
-//    Map<String, Object> swaggerArgs = new HashMap<>();
-//    swaggerArgs.put("form1", "v1");
-//    swaggerArgs.put("form2", null);
-//    init("form", swaggerArgs);
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get(HttpHeaders.CONTENT_TYPE))
-//        .isEqualTo(MediaType.APPLICATION_FORM_URLENCODED);
-//    assertThat(transportContext.getRequestParameters().getBodyBuffer().toString())
-//        .isEqualTo("form1=v1");
-//  }
-//
-//  @Test
-//  void should_encode_form_with_upload_parameter() {
-//    init("formWithUpload", ImmutableMap.of("form1", "v1", "form2", new File("form2")));
-//
-//    encoder.encode(invocation);
-//
-//    RestClientRequestParameters requestParameters = transportContext.getRequestParameters();
-//    assertThat(requestParameters.getBodyBuffer().toString())
-//        .isEqualTo("\r\n"
-//            + "--my-boundary\r\n"
-//            + "Content-Disposition: form-data; name=\"form1\"\r\n"
-//            + "\r\n"
-//            + "v1");
-//    List<Part> parts = Lists.newArrayList(requestParameters.getUploads().get("form2"));
-//    assertThat(parts).hasSize(1);
-//    assertThat(((FilePart) parts.get(0))).isInstanceOf(FilePart.class);
-//  }
-//
-//  @Test
-//  void should_encode_form_with_upload_list() {
-//    init("formWithUploadList", ImmutableMap.of("files", Arrays.asList(new File("f1"), new File("f2"))));
-//
-//    encoder.encode(invocation);
-//
-//    checkUploadList();
-//  }
-//
-//  @Test
-//  void should_encode_form_with_upload_array() {
-//    init("formWithUploadList", ImmutableMap.of("files", new File[] {new File("f1"), new File("f2")}));
-//
-//    encoder.encode(invocation);
-//
-//    checkUploadList();
-//  }
-//
-//  private void checkUploadList() {
-//    RestClientRequestParameters requestParameters = transportContext.getRequestParameters();
-//    assertThat(requestParameters.getBodyBuffer()).isNull();
-//    List<Part> parts = Lists.newArrayList(requestParameters.getUploads().get("files"));
-//    assertThat(parts).hasSize(2);
-//    assertThat(((FilePart) parts.get(0)).getAbsolutePath()).endsWith("f1");
-//    assertThat(((FilePart) parts.get(1)).getAbsolutePath()).endsWith("f2");
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
deleted file mode 100644
index 563b38ae3..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
+++ /dev/null
@@ -1,98 +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.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-public class RestClientTestBase {
-//  static SCBEngine scbEngine;
-//
-//  static Transport restTransport = new FakeRestTransport();
-//
-//  static RestClientTransportContextFactory factory = new RestClientTransportContextFactory()
-//      .setBoundaryFactory(() -> "my-boundary");
-//
-//  ReferenceConfig referenceConfig = new ReferenceConfig(Const.RESTFUL, Const.DEFAULT_VERSION_RULE);
-//
-//  OperationMeta operationMeta;
-//
-//  RestOperationMeta restOperationMeta;
-//
-//  Invocation invocation;
-//
-//  RestClientTransportContext transportContext;
-//
-//  HttpClientRequest httpClientRequest;
-//
-//  @BeforeAll
-//  static void beforeAll() {
-//    ConfigUtil.installDynamicConfig();
-//    scbEngine = SCBBootstrap.createSCBEngineForTest()
-//        .addProducerMeta(SCHEMA_ID, new RestFeatureController());
-//
-//    RestClientTransportContextFactory transportContextFactory = new RestClientTransportContextFactory()
-//        .setBoundaryFactory(BoundaryFactory.DEFAULT)
-//        .setHttpClientRequestFactory(HttpClientRequestFactory.DEFAULT);
-//    RestClientCodecFilter restClientCodecFilter = new RestClientCodecFilter()
-//        .setTransportContextFactory(transportContextFactory)
-//        .setEncoder(new RestClientEncoder())
-//        .setDecoder(new RestClientDecoder());
-//    scbEngine.getFilterChainsManager()
-//        .addFilters(Arrays.asList(
-//            new SimpleLoadBalanceFilter(),
-//            restClientCodecFilter,
-//            new RestClientSenderFilter(),
-//            new RestServerCodecFilter(),
-//            new ScheduleFilter(),
-//            new ProviderOperationFilter()
-//        ));
-//
-//    scbEngine.run();
-//    HttpClients.load();
-//  }
-//
-//  @AfterAll
-//  static void afterAll() {
-//    scbEngine.destroy();
-//    HttpClients.destroy();
-//
-//    ArchaiusUtils.resetConfig();
-//  }
-//
-//  void init(String operationId, Map<String, Object> swaggerArgs, boolean ssl) {
-//    operationMeta = scbEngine.getProducerMicroserviceMeta()
-//        .ensureFindSchemaMeta(SCHEMA_ID)
-//        .ensureFindOperation(operationId);
-//    restOperationMeta = RestMetaUtils.getRestOperationMeta(operationMeta);
-//
-//    invocation = InvocationFactory.forConsumer(
-//        referenceConfig, operationMeta, operationMeta.buildBaseConsumerRuntimeType(), swaggerArgs);
-//
-//    String url = "rest://localhost:1234?sslEnabled=" + ssl;
-//    invocation.setEndpoint(new Endpoint(restTransport, url));
-//
-//    transportContext = factory.create(invocation);
-//    invocation.setTransportContext(transportContext);
-//    httpClientRequest = transportContext.getHttpClientRequest();
-//  }
-//
-//  String absoluteURI() {
-//    return httpClientRequest.absoluteURI();
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java
deleted file mode 100644
index a5a299ac6..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java
+++ /dev/null
@@ -1,107 +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.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientTransportContextFactoryTest extends RestClientTestBase {
-//  void init(Map<String, Object> swaggerArgs, boolean ssl) {
-//    init("query", swaggerArgs, ssl);
-//  }
-//
-//  @Test
-//  void should_create_without_ssl() {
-//    init(null, false);
-//
-//    assertThat(absoluteURI()).isEqualTo("http://localhost:1234/query");
-//  }
-//
-//  @Test
-//  void should_create_with_ssl() {
-//    init(null, true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query");
-//  }
-//
-//  @Test
-//  void should_create_with_query() {
-//    init(ImmutableMap.of("query", "value"), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=value");
-//  }
-//
-//  @Test
-//  void should_ignore_null_query_value() {
-//    Map<String, Object> swaggerArgs = new HashMap<>();
-//    swaggerArgs.put("query", null);
-//    init(swaggerArgs, true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query");
-//  }
-//
-//  @Test
-//  void should_create_with_query_list() {
-//    init(ImmutableMap.of("query", Arrays.asList("v1", "v2")), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1&query=v2");
-//  }
-//
-//  @Test
-//  void should_ignore_null_in_query_list() {
-//    init(ImmutableMap.of("query", Arrays.asList("v1", null)), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1");
-//  }
-//
-//  @Test
-//  void should_create_with_query_array() {
-//    init(ImmutableMap.of("query", new String[] {"v1", "v2"}), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1&query=v2");
-//  }
-//
-//  @Test
-//  void should_ignore_null_in_query_array() {
-//    init(ImmutableMap.of("query", new String[] {"v1", null}), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1");
-//  }
-//
-//  @Test
-//  void should_get_local_address_as_not_connected_before_connect() {
-//    init(null, true);
-//
-//    assertThat(transportContext.getLocalAddress()).isEqualTo("not connected");
-//  }
-//
-//  @Test
-//  void should_allowed_modify_host() {
-//    factory.setHttpClientRequestFactory((invocation, httpClient, options) -> {
-//      options.setHost(invocation.getSwaggerArgument("clusterId") + "." + options.getHost());
-//      return httpClient.request(options).result();
-//    });
-//
-//    init(ImmutableMap.of("clusterId", "my-id"), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://my-id.localhost:1234/query");
-//
-//    factory.setHttpClientRequestFactory(HttpClientRequestFactory.DEFAULT);
-//  }
-}


[servicecomb-java-chassis] 02/03: [SCB-1929]rename new api name PROVIDER/CONSUMER

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 350636ce9846f89acf0d174061a42558556ebb2e
Author: liubao <bi...@qq.com>
AuthorDate: Tue Aug 8 15:02:40 2023 +0800

    [SCB-1929]rename new api name PROVIDER/CONSUMER
---
 .../internal/converter/TestSchemaMetaCodec.java    | 10 +++++-----
 .../converter/TestSchemaMetaCodecRestTemplate.java |  4 ++--
 .../rest/filter/inner/RestServerCodecFilter.java   |  6 +++---
 .../org/apache/servicecomb/core/Invocation.java    |  4 ++--
 .../org/apache/servicecomb/core/SCBEngine.java     |  5 +++--
 .../core/filter/CoreFilterConfiguration.java       | 10 +++++-----
 .../org/apache/servicecomb/core/filter/Filter.java | 22 +++++++---------------
 .../core/filter/FilterChainsManager.java           | 16 ++++++++--------
 .../core/filter/InvocationFilterChains.java        | 10 +++++-----
 .../{ProducerFilter.java => ProviderFilter.java}   |  4 ++--
 .../core/filter/impl/ParameterValidatorFilter.java |  6 +++---
 ...ionFilter.java => ProviderOperationFilter.java} |  6 +++---
 .../core/filter/impl/ScheduleFilter.java           |  6 +++---
 .../filter/impl/ProducerOperationFilterTest.java   |  2 +-
 .../service/encrypt/filter/DecodeBodyFilter.java   |  2 +-
 .../encrypt/filter/EdgeSignatureRequestFilter.java |  2 +-
 .../filter/EdgeSignatureResponseFilter.java        |  2 +-
 .../edge/service/encrypt/filter/UserIdFilter.java  |  2 +-
 .../demo/edge/service/handler/AuthHandler.java     |  9 +++++----
 .../springboot/pojo/server/handler/MyHandler.java  |  6 +++---
 demo/demo-springmvc/springmvc-client/pom.xml       |  4 ----
 demo/demo-springmvc/springmvc-server/pom.xml       |  4 ----
 .../demo/springmvc/filter/ProviderTestFilter.java  |  6 +++---
 demo/pom.xml                                       |  5 -----
 .../servicecomb/qps/ProviderFlowControlFilter.java |  6 +++---
 .../handler/governance/ProviderBulkheadFilter.java |  6 +++---
 .../governance/ProviderCircuitBreakerFilter.java   |  6 +++---
 .../governance/ProviderRateLimitingFilter.java     |  6 +++---
 .../provider/ProviderAuthFilter.java               |  6 +++---
 .../router/custom/RouterAddHeaderFilter.java       |  4 ++--
 .../tracing/zipkin/ZipkinTracingFilter.java        |  4 ++--
 .../metrics/core/publish/PublishModelFactory.java  |  2 +-
 .../core/TestInvocationMetersInitializer.java      |  2 +-
 .../publish/TestInvocationPublishModelFactory.java |  2 +-
 .../swagger/invocation/InvocationType.java         |  2 +-
 .../org/apache/servicecomb/core/TestResponse.java  |  6 +++---
 .../highway/HighwayServerCodecFilter.java          |  6 +++---
 .../transport/rest/client/RestClientTestBase.java  |  2 +-
 38 files changed, 97 insertions(+), 116 deletions(-)

diff --git a/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodec.java b/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodec.java
index 15b8f12da..17efb6eb5 100644
--- a/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodec.java
+++ b/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodec.java
@@ -149,7 +149,7 @@ public class TestSchemaMetaCodec {
 
   private void testProtoSchemaOperationUserImpl() throws IOException {
     Invocation consumerInvocation = mockInvocation("user", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("user", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("user", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
@@ -224,7 +224,7 @@ public class TestSchemaMetaCodec {
 
   private void testProtoSchemaOperationmapUserImpl(boolean isPojo) throws IOException {
     Invocation consumerInvocation = mockInvocation("mapUser", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("mapUser", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("mapUser", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
@@ -299,7 +299,7 @@ public class TestSchemaMetaCodec {
 
   private void testProtoSchemaOperationBaseImpl(boolean isPojo) throws IOException {
     Invocation consumerInvocation = mockInvocation("base", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("base", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("base", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
@@ -418,7 +418,7 @@ public class TestSchemaMetaCodec {
 
   private void testProtoSchemaOperationlistListUserImpl(boolean isPojo) throws IOException {
     Invocation consumerInvocation = mockInvocation("listListUser", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("listListUser", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("listListUser", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
@@ -491,7 +491,7 @@ public class TestSchemaMetaCodec {
 
   private void testProtoSchemaOperationObjImpl(boolean isPojo) throws IOException {
     Invocation consumerInvocation = mockInvocation("obj", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("obj", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("obj", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
diff --git a/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java b/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
index 0f17a5bea..985fcd62c 100644
--- a/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
+++ b/common/common-protobuf/src/test/java/org/apache/servicecomb/codec/protobuf/internal/converter/TestSchemaMetaCodecRestTemplate.java
@@ -131,7 +131,7 @@ public class TestSchemaMetaCodecRestTemplate {
   @Test
   public void testProtoSchemaOperationUser() throws Exception {
     Invocation consumerInvocation = mockInvocation("user", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("user", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("user", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
@@ -180,7 +180,7 @@ public class TestSchemaMetaCodecRestTemplate {
   @SuppressWarnings({"rawtypes", "unchecked"})
   public void testProtoSchemaOperationBase() throws Exception {
     Invocation consumerInvocation = mockInvocation("base", InvocationType.CONSUMER);
-    Invocation providerInvocation = mockInvocation("base", InvocationType.PRODUCER);
+    Invocation providerInvocation = mockInvocation("base", InvocationType.PROVIDER);
 
     OperationProtobuf providerOperationProtobuf = ProtobufManager
         .getOrCreateOperation(providerInvocation);
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
index 13585d8f6..38e91a19d 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
@@ -37,7 +37,7 @@ import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.foundation.common.utils.AsyncUtils;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
@@ -52,7 +52,7 @@ import io.netty.buffer.Unpooled;
 import io.vertx.core.MultiMap;
 import jakarta.servlet.http.Part;
 
-public class RestServerCodecFilter implements ProducerFilter {
+public class RestServerCodecFilter implements ProviderFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(RestServerCodecFilter.class);
 
   public static final String NAME = "rest-server-codec";
@@ -66,7 +66,7 @@ public class RestServerCodecFilter implements ProducerFilter {
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
     // almost time, should be the first filter.
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 2000;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 2000;
   }
 
   @Override
diff --git a/core/src/main/java/org/apache/servicecomb/core/Invocation.java b/core/src/main/java/org/apache/servicecomb/core/Invocation.java
index 7d686c112..1c90cb8c0 100644
--- a/core/src/main/java/org/apache/servicecomb/core/Invocation.java
+++ b/core/src/main/java/org/apache/servicecomb/core/Invocation.java
@@ -125,7 +125,7 @@ public class Invocation extends SwaggerInvocation {
   }
 
   public Invocation(Endpoint endpoint, OperationMeta operationMeta, Map<String, Object> swaggerArguments) {
-    this.invocationType = InvocationType.PRODUCER;
+    this.invocationType = InvocationType.PROVIDER;
     this.invocationRuntimeType = operationMeta.buildBaseProviderRuntimeType();
     this.endpoint = endpoint;
     init(operationMeta, swaggerArguments);
@@ -417,7 +417,7 @@ public class Invocation extends SwaggerInvocation {
   }
 
   public boolean isProducer() {
-    return InvocationType.PRODUCER.equals(invocationType);
+    return InvocationType.PROVIDER.equals(invocationType);
   }
 
   public boolean isEdge() {
diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
index b3a71b8da..bb2e832f6 100644
--- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
+++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java
@@ -400,7 +400,8 @@ public class SCBEngine {
     String microserviceName = this.microserviceProperties.getName();
     producerMicroserviceMeta = new MicroserviceMeta(this,
         this.microserviceProperties.getApplication(), microserviceName, false);
-    producerMicroserviceMeta.setFilterChain(filterChainsManager.findProducerChain(microserviceName));
+    producerMicroserviceMeta.setFilterChain(filterChainsManager.findProducerChain(
+        this.microserviceProperties.getApplication(), microserviceName));
     producerMicroserviceMeta.setMicroserviceVersionsMeta(new MicroserviceVersionsMeta(this));
   }
 
@@ -551,7 +552,7 @@ public class SCBEngine {
       String microserviceName, List<? extends DiscoveryInstance> instances) {
     ConsumerMicroserviceVersionsMeta microserviceVersionsMeta = new ConsumerMicroserviceVersionsMeta(this);
     MicroserviceMeta microserviceMeta = new MicroserviceMeta(this, application, microserviceName, true);
-    microserviceMeta.setFilterChain(getFilterChainsManager().findConsumerChain(microserviceName));
+    microserviceMeta.setFilterChain(getFilterChainsManager().findConsumerChain(application, microserviceName));
     microserviceMeta.setMicroserviceVersionsMeta(microserviceVersionsMeta);
 
     Map<String, String> schemas = new HashMap<>();
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java b/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
index 0d383075c..d03b69753 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
@@ -17,7 +17,7 @@
 package org.apache.servicecomb.core.filter;
 
 import org.apache.servicecomb.core.filter.impl.ParameterValidatorFilter;
-import org.apache.servicecomb.core.filter.impl.ProducerOperationFilter;
+import org.apache.servicecomb.core.filter.impl.ProviderOperationFilter;
 import org.apache.servicecomb.core.filter.impl.ScheduleFilter;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
@@ -32,12 +32,12 @@ public class CoreFilterConfiguration {
 //  }
 
   @Bean
-  public ProducerFilter producerOperationFilter() {
-    return new ProducerOperationFilter();
+  public ProviderFilter producerOperationFilter() {
+    return new ProviderOperationFilter();
   }
 
   @Bean
-  public ProducerFilter scheduleFilter() {
+  public ProviderFilter scheduleFilter() {
     return new ScheduleFilter();
   }
 
@@ -47,7 +47,7 @@ public class CoreFilterConfiguration {
   }
 
   @Bean
-  public ProducerFilter parameterValidatorFilter() {
+  public ProviderFilter parameterValidatorFilter() {
     return new ParameterValidatorFilter();
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java b/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
index eadf0e0a4..e84302808 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
@@ -21,16 +21,12 @@ import java.util.concurrent.CompletableFuture;
 import javax.annotation.Nonnull;
 
 import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.provider.consumer.InvokerUtils;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 
 /**
  * <pre>
- * unified extension for replace old version extensions:
- *   1. Handler
- *   2. HttpClientFilter
- *   3. HttpServerFilter
+ *  Filters are the basics of how an invocation is executed.
  *
  * thread rule:
  *   assume a producer filter chains is: f1, f2, schedule, f3, f4
@@ -54,7 +50,7 @@ import org.apache.servicecomb.swagger.invocation.Response;
  * </pre>
  */
 public interface Filter {
-  int PRODUCER_SCHEDULE_FILTER_ORDER = 0;
+  int PROVIDER_SCHEDULE_FILTER_ORDER = 0;
 
   int CONSUMER_LOAD_BALANCE_ORDER = 0;
 
@@ -66,22 +62,17 @@ public interface Filter {
     return true;
   }
 
-  default boolean isEnabledForMicroservice(String microservice) {
-    //TODO read configuration and check if filter enabled.
+  default boolean isEnabledForMicroservice(String application, String serviceName) {
     return true;
   }
 
-  default int getOrder(InvocationType invocationType, String microservice) {
+  default int getOrder(InvocationType invocationType, String application, String serviceName) {
     return 0;
   }
 
-  default boolean isInEventLoop() {
-    return InvokerUtils.isInEventLoop();
-  }
-
   @Nonnull
   default String getName() {
-    throw new IllegalStateException("must provide filter name.");
+    throw new IllegalStateException("must provide unique filter name.");
   }
 
   /**
@@ -94,7 +85,8 @@ public interface Filter {
    *         all fail data can only express by exception<br>
    *         <br>
    *         special for producer:<br>
-   *           if response is failure, then after encode response, response.result will be exception.errorData, not a exception
+   *           if response is failure, then after encode response, response.result will
+   *           be exception.errorData, not a exception
    */
   CompletableFuture<Response> onFilter(Invocation invocation, FilterNode nextNode);
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java b/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
index 72b895cad..033208219 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
@@ -28,7 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 public class FilterChainsManager {
   private final InvocationFilterChains consumerChains = new InvocationFilterChains(InvocationType.CONSUMER);
 
-  private final InvocationFilterChains producerChains = new InvocationFilterChains(InvocationType.PRODUCER);
+  private final InvocationFilterChains producerChains = new InvocationFilterChains(InvocationType.PROVIDER);
 
   @Autowired
   public FilterChainsManager addFilters(List<Filter> filters) {
@@ -37,7 +37,7 @@ public class FilterChainsManager {
         consumerChains.addFilter(filter);
       }
 
-      if (filter.isEnabledForInvocationType(InvocationType.PRODUCER)) {
+      if (filter.isEnabledForInvocationType(InvocationType.PROVIDER)) {
         producerChains.addFilter(filter);
       }
     }
@@ -49,12 +49,12 @@ public class FilterChainsManager {
     return this;
   }
 
-  public FilterNode findConsumerChain(String microserviceName) {
-    return consumerChains.findChain(microserviceName);
+  public FilterNode findConsumerChain(String application, String serviceName) {
+    return consumerChains.findChain(application, serviceName);
   }
 
-  public FilterNode findProducerChain(String microserviceName) {
-    return producerChains.findChain(microserviceName);
+  public FilterNode findProducerChain(String application, String serviceName) {
+    return producerChains.findChain(application, serviceName);
   }
 
   public String collectResolvedChains() {
@@ -64,14 +64,14 @@ public class FilterChainsManager {
     appendLine(sb, "  filters: %s", collectFilterNames(consumerChains, InvocationType.CONSUMER));
 
     appendLine(sb, "producer: ");
-    appendLine(sb, "  filters: %s", collectFilterNames(producerChains, InvocationType.PRODUCER));
+    appendLine(sb, "  filters: %s", collectFilterNames(producerChains, InvocationType.PROVIDER));
 
     return deleteLast(sb, 1).toString();
   }
 
   private List<String> collectFilterNames(InvocationFilterChains chains, InvocationType invocationType) {
     return chains.getFilters().stream()
-        .map(filter -> filter.getName() + "(" + filter.getOrder(invocationType, null) + ")")
+        .map(filter -> filter.getName() + "(" + filter.getOrder(invocationType, null, null) + ")")
         .collect(Collectors.toList());
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
index c831b28d3..d64534ea4 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
@@ -44,16 +44,16 @@ public class InvocationFilterChains {
     filters.put(filter.getName(), filter);
   }
 
-  public FilterNode findChain(String microserviceName) {
-    FilterNode filterNode = microserviceChains.get(microserviceName);
+  public FilterNode findChain(String application, String serviceName) {
+    FilterNode filterNode = microserviceChains.get(serviceName);
     if (filterNode == null) {
       List<Filter> serviceFilters = filters.entrySet().stream()
-          .filter(e -> e.getValue().isEnabledForMicroservice(microserviceName))
+          .filter(e -> e.getValue().isEnabledForMicroservice(application, serviceName))
           .map(e -> e.getValue())
           .collect(Collectors.toList());
-      serviceFilters.sort(Comparator.comparingInt(a -> a.getOrder(invocationType, microserviceName)));
+      serviceFilters.sort(Comparator.comparingInt(a -> a.getOrder(invocationType, application, serviceName)));
       filterNode = FilterNode.buildChain(serviceFilters);
-      microserviceChains.put(microserviceName, filterNode);
+      microserviceChains.put(serviceName, filterNode);
     }
     return filterNode;
   }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/ProducerFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
similarity index 91%
rename from core/src/main/java/org/apache/servicecomb/core/filter/ProducerFilter.java
rename to core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
index 9d68af0d1..bfac61a03 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/ProducerFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
@@ -20,10 +20,10 @@ import javax.annotation.Nonnull;
 
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 
-public interface ProducerFilter extends Filter {
+public interface ProviderFilter extends Filter {
   @Nonnull
   @Override
   default boolean isEnabledForInvocationType(InvocationType invocationType) {
-    return invocationType == InvocationType.PRODUCER;
+    return invocationType == InvocationType.PROVIDER;
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
index f5a26e10c..351b06d1f 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
@@ -31,7 +31,7 @@ import jakarta.validation.groups.Default;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.foundation.common.utils.AsyncUtils;
 import org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
@@ -46,7 +46,7 @@ import org.springframework.beans.factory.InitializingBean;
 
 import com.netflix.config.DynamicPropertyFactory;
 
-public class ParameterValidatorFilter implements ProducerFilter, InitializingBean {
+public class ParameterValidatorFilter implements ProviderFilter, InitializingBean {
   private static final Logger LOGGER = LoggerFactory.getLogger(ParameterValidatorFilter.class);
 
   public static final String NAME = "validator";
@@ -63,7 +63,7 @@ public class ParameterValidatorFilter implements ProducerFilter, InitializingBea
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER + 1000;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 1000;
   }
 
   @Override
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
similarity index 95%
rename from core/src/main/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilter.java
rename to core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
index eb92e372d..d1b07bff0 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
@@ -25,14 +25,14 @@ import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.exception.Exceptions;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.foundation.common.utils.AsyncUtils;
 import org.apache.servicecomb.swagger.engine.SwaggerProducerOperation;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.swagger.invocation.context.ContextUtils;
 
-public class ProducerOperationFilter implements ProducerFilter {
+public class ProviderOperationFilter implements ProviderFilter {
   public static final String NAME = "producer-operation";
 
   @Nonnull
@@ -44,7 +44,7 @@ public class ProducerOperationFilter implements ProducerFilter {
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
     // almost time, should be the last filter.
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER + 2000;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 2000;
   }
 
   @Override
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
index 00d430a7b..7f08061fb 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
@@ -25,12 +25,12 @@ import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.exception.Exceptions;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.core.invocation.InvocationStageTrace;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 
-public class ScheduleFilter implements ProducerFilter {
+public class ScheduleFilter implements ProviderFilter {
   public static final String NAME = "schedule";
 
   @Nonnull
@@ -41,7 +41,7 @@ public class ScheduleFilter implements ProducerFilter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER;
   }
 
   @Override
diff --git a/core/src/test/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilterTest.java b/core/src/test/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilterTest.java
index 3e2293676..4a072a2ba 100644
--- a/core/src/test/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilterTest.java
+++ b/core/src/test/java/org/apache/servicecomb/core/filter/impl/ProducerOperationFilterTest.java
@@ -44,7 +44,7 @@ import mockit.Mocked;
 import mockit.Verifications;
 
 public class ProducerOperationFilterTest {
-  ProducerOperationFilter filter = new ProducerOperationFilter();
+  ProviderOperationFilter filter = new ProviderOperationFilter();
 
   @Injectable
   Invocation invocation;
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/DecodeBodyFilter.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/DecodeBodyFilter.java
index c59dbda93..9e971e860 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/DecodeBodyFilter.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/DecodeBodyFilter.java
@@ -41,7 +41,7 @@ public class DecodeBodyFilter implements ConsumerFilter {
   private JavaType bodyType = TypeFactory.defaultInstance().constructMapType(Map.class, String.class, String[].class);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 1790;
   }
 
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureRequestFilter.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureRequestFilter.java
index a01119c4a..bbefe0bff 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureRequestFilter.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureRequestFilter.java
@@ -45,7 +45,7 @@ public class EdgeSignatureRequestFilter implements ConsumerFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(EdgeSignatureRequestFilter.class);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 1800;
   }
 
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureResponseFilter.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureResponseFilter.java
index cea1f2643..5d4d9ea38 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureResponseFilter.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/EdgeSignatureResponseFilter.java
@@ -44,7 +44,7 @@ public class EdgeSignatureResponseFilter implements ConsumerFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(EdgeSignatureResponseFilter.class);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1991;
   }
 
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/UserIdFilter.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/UserIdFilter.java
index e7e7965e4..49820941e 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/UserIdFilter.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/encrypt/filter/UserIdFilter.java
@@ -33,7 +33,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class UserIdFilter implements ConsumerFilter {
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 1790;
   }
 
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
index 13607406e..ddc81adf8 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
@@ -20,7 +20,6 @@ package org.apache.servicecomb.demo.edge.service.handler;
 import java.util.concurrent.CompletableFuture;
 
 import javax.annotation.Nonnull;
-import jakarta.ws.rs.core.Response.Status;
 
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.ConsumerFilter;
@@ -35,6 +34,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
+import jakarta.ws.rs.core.Response.Status;
+
 @Component
 public class AuthHandler implements ConsumerFilter {
   private static Logger LOGGER = LoggerFactory.getLogger(AuthHandler.class);
@@ -46,13 +47,13 @@ public class AuthHandler implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 1980;
   }
 
   @Override
-  public boolean isEnabledForMicroservice(String microservice) {
-    if ("auth".equals(microservice)) {
+  public boolean isEnabledForMicroservice(String application, String serviceName) {
+    if ("auth".equals(serviceName)) {
       return false;
     }
     return true;
diff --git a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
index 1be19128a..615afab42 100644
--- a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
+++ b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
@@ -24,7 +24,7 @@ import javax.annotation.Nonnull;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.demo.springboot.pojo.server.schema.server.User;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 @Component
-public class MyHandler implements ProducerFilter {
+public class MyHandler implements ProviderFilter {
 
   private static final Logger LOGGER = LoggerFactory.getLogger(MyHandler.class);
 
@@ -41,7 +41,7 @@ public class MyHandler implements ProducerFilter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 100;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 100;
   }
 
   @Nonnull
diff --git a/demo/demo-springmvc/springmvc-client/pom.xml b/demo/demo-springmvc/springmvc-client/pom.xml
index 831e3ba7e..0f6a652eb 100644
--- a/demo/demo-springmvc/springmvc-client/pom.xml
+++ b/demo/demo-springmvc/springmvc-client/pom.xml
@@ -54,10 +54,6 @@
       <artifactId>handler-fault-injection</artifactId>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.servicecomb.demo</groupId>
-      <artifactId>demo-signature</artifactId>
-    </dependency>
     <dependency>
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>foundation-test-scaffolding</artifactId>
diff --git a/demo/demo-springmvc/springmvc-server/pom.xml b/demo/demo-springmvc/springmvc-server/pom.xml
index 46c7b5849..179a6fb0d 100644
--- a/demo/demo-springmvc/springmvc-server/pom.xml
+++ b/demo/demo-springmvc/springmvc-server/pom.xml
@@ -57,10 +57,6 @@
       <groupId>org.apache.servicecomb</groupId>
       <artifactId>config-cc</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb.demo</groupId>
-      <artifactId>demo-signature</artifactId>
-    </dependency>
   </dependencies>
 
   <properties>
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
index 18520897a..63a1537ec 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
@@ -24,16 +24,16 @@ import javax.annotation.Nonnull;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.springframework.stereotype.Component;
 
 @Component
-public class ProviderTestFilter implements ProducerFilter {
+public class ProviderTestFilter implements ProviderFilter {
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 1800;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1800;
   }
 
   @Nonnull
diff --git a/demo/pom.xml b/demo/pom.xml
index 06b7a9fd2..6613abe14 100644
--- a/demo/pom.xml
+++ b/demo/pom.xml
@@ -59,11 +59,6 @@
 
   <dependencyManagement>
     <dependencies>
-      <dependency>
-        <groupId>org.apache.servicecomb.demo</groupId>
-        <artifactId>demo-signature</artifactId>
-        <version>${project.version}</version>
-      </dependency>
       <dependency>
         <groupId>org.apache.servicecomb.demo</groupId>
         <artifactId>demo-schema</artifactId>
diff --git a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
index a4840146d..43fbc0786 100644
--- a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
+++ b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
@@ -25,7 +25,7 @@ import org.apache.servicecomb.core.Const;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
@@ -33,12 +33,12 @@ import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
 
 import com.google.common.annotations.VisibleForTesting;
 
-public class ProviderFlowControlFilter implements ProducerFilter {
+public class ProviderFlowControlFilter implements ProviderFilter {
   private final QpsControllerManager qpsControllerMgr = new QpsControllerManager(true);
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 1990;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1990;
   }
 
   @Nonnull
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
index 935d1eb49..552c5c9e2 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
@@ -26,7 +26,7 @@ import javax.annotation.Nonnull;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.core.governance.MatchType;
 import org.apache.servicecomb.governance.handler.BulkheadHandler;
 import org.apache.servicecomb.governance.marker.GovernanceRequestExtractor;
@@ -43,7 +43,7 @@ import io.github.resilience4j.bulkhead.BulkheadFullException;
 import io.github.resilience4j.decorators.Decorators;
 import io.github.resilience4j.decorators.Decorators.DecorateCompletionStage;
 
-public class ProviderBulkheadFilter implements ProducerFilter {
+public class ProviderBulkheadFilter implements ProviderFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(ProviderBulkheadFilter.class);
 
   private final BulkheadHandler bulkheadHandler;
@@ -55,7 +55,7 @@ public class ProviderBulkheadFilter implements ProducerFilter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 1880;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1880;
   }
 
   @Nonnull
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
index 04192b3f5..dff10b9e7 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
@@ -26,7 +26,7 @@ import javax.annotation.Nonnull;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.core.governance.MatchType;
 import org.apache.servicecomb.governance.handler.CircuitBreakerHandler;
 import org.apache.servicecomb.governance.marker.GovernanceRequestExtractor;
@@ -43,7 +43,7 @@ import io.github.resilience4j.circuitbreaker.CircuitBreaker;
 import io.github.resilience4j.decorators.Decorators;
 import io.github.resilience4j.decorators.Decorators.DecorateCompletionStage;
 
-public class ProviderCircuitBreakerFilter implements ProducerFilter {
+public class ProviderCircuitBreakerFilter implements ProviderFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(ProviderCircuitBreakerFilter.class);
 
   private final CircuitBreakerHandler circuitBreakerHandler;
@@ -55,7 +55,7 @@ public class ProviderCircuitBreakerFilter implements ProducerFilter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 1890;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1890;
   }
 
   @Nonnull
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
index a839ce561..69c5bc4ce 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
@@ -26,7 +26,7 @@ import javax.annotation.Nonnull;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.core.governance.MatchType;
 import org.apache.servicecomb.governance.handler.RateLimitingHandler;
 import org.apache.servicecomb.governance.marker.GovernanceRequestExtractor;
@@ -43,7 +43,7 @@ import io.github.resilience4j.decorators.Decorators.DecorateCompletionStage;
 import io.github.resilience4j.ratelimiter.RateLimiter;
 import io.github.resilience4j.ratelimiter.RequestNotPermitted;
 
-public class ProviderRateLimitingFilter implements ProducerFilter {
+public class ProviderRateLimitingFilter implements ProviderFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(ProviderRateLimitingFilter.class);
 
   private final RateLimitingHandler rateLimitingHandler;
@@ -55,7 +55,7 @@ public class ProviderRateLimitingFilter implements ProducerFilter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 1900;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1900;
   }
 
   @Nonnull
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
index e65383651..0b3dab471 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
@@ -24,7 +24,7 @@ import org.apache.servicecomb.core.Const;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
@@ -32,7 +32,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 
 import jakarta.ws.rs.core.Response.Status;
 
-public class ProviderAuthFilter implements ProducerFilter {
+public class ProviderAuthFilter implements ProviderFilter {
   private ProviderTokenManager authenticationTokenManager;
 
   @Autowired
@@ -42,7 +42,7 @@ public class ProviderAuthFilter implements ProducerFilter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER + 1010;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 1010;
   }
 
   @Nonnull
diff --git a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
index 9dcbdebff..e40ee7dbd 100644
--- a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
+++ b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
@@ -29,7 +29,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.foundation.common.utils.JsonUtils;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
@@ -105,7 +105,7 @@ public class RouterAddHeaderFilter implements Filter {
 
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
-    return ProducerFilter.PRODUCER_SCHEDULE_FILTER_ORDER - 1970;
+    return ProviderFilter.PROVIDER_SCHEDULE_FILTER_ORDER - 1970;
   }
 
   @Nonnull
diff --git a/handlers/handler-tracing-zipkin/src/main/java/org/apache/servicecomb/tracing/zipkin/ZipkinTracingFilter.java b/handlers/handler-tracing-zipkin/src/main/java/org/apache/servicecomb/tracing/zipkin/ZipkinTracingFilter.java
index a9d09abca..2f67b4b64 100644
--- a/handlers/handler-tracing-zipkin/src/main/java/org/apache/servicecomb/tracing/zipkin/ZipkinTracingFilter.java
+++ b/handlers/handler-tracing-zipkin/src/main/java/org/apache/servicecomb/tracing/zipkin/ZipkinTracingFilter.java
@@ -17,7 +17,7 @@
 
 package org.apache.servicecomb.tracing.zipkin;
 
-import static org.apache.servicecomb.swagger.invocation.InvocationType.PRODUCER;
+import static org.apache.servicecomb.swagger.invocation.InvocationType.PROVIDER;
 
 import java.util.concurrent.CompletableFuture;
 
@@ -66,7 +66,7 @@ public class ZipkinTracingFilter implements Filter {
   }
 
   private ZipkinTracingDelegate collectTracing(Invocation invocation) {
-    if (PRODUCER.equals(invocation.getInvocationType())) {
+    if (PROVIDER.equals(invocation.getInvocationType())) {
       return producer;
     }
 
diff --git a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
index edd64ed3f..69e1d7b3f 100644
--- a/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
+++ b/metrics/metrics-core/src/main/java/org/apache/servicecomb/metrics/core/publish/PublishModelFactory.java
@@ -107,7 +107,7 @@ public class PublishModelFactory {
         .setOperationPerfGroups(generateOperationPerfGroups(tree, InvocationType.CONSUMER.name()));
 
     model.getProducer()
-        .setOperationPerfGroups(generateOperationPerfGroups(tree, InvocationType.PRODUCER.name()));
+        .setOperationPerfGroups(generateOperationPerfGroups(tree, InvocationType.PROVIDER.name()));
     //edge
     model.getEdge()
         .setOperationPerfGroups(generateOperationPerfGroups(tree, MeterInvocationConst.EDGE_INVOCATION_NAME));
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
index 19a8641ee..fc6e7e090 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
@@ -249,7 +249,7 @@ public class TestInvocationMetersInitializer {
         invocation.isConsumer();
         result = false;
         invocation.getInvocationType();
-        result = InvocationType.PRODUCER;
+        result = InvocationType.PROVIDER;
         invocation.getRealTransportName();
         result = Const.RESTFUL;
         invocation.getMicroserviceQualifiedName();
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestInvocationPublishModelFactory.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestInvocationPublishModelFactory.java
index 61288922c..4b084f314 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestInvocationPublishModelFactory.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/publish/TestInvocationPublishModelFactory.java
@@ -386,7 +386,7 @@ public class TestInvocationPublishModelFactory {
     InvocationFinishEvent finishEvent = new InvocationFinishEvent(invocation, response);
     eventBus.post(finishEvent);
 
-    invocationType = InvocationType.PRODUCER;
+    invocationType = InvocationType.PROVIDER;
     eventBus.post(finishEvent);
   }
 }
diff --git a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/InvocationType.java b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/InvocationType.java
index 9ce4273a2..e519c28f0 100644
--- a/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/InvocationType.java
+++ b/swagger/swagger-invocation/invocation-core/src/main/java/org/apache/servicecomb/swagger/invocation/InvocationType.java
@@ -19,5 +19,5 @@ package org.apache.servicecomb.swagger.invocation;
 
 public enum InvocationType {
   CONSUMER,
-  PRODUCER
+  PROVIDER
 }
diff --git a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/core/TestResponse.java b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/core/TestResponse.java
index 6c108e33c..1eaa0dfcc 100644
--- a/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/core/TestResponse.java
+++ b/swagger/swagger-invocation/invocation-core/src/test/java/org/apache/servicecomb/core/TestResponse.java
@@ -80,7 +80,7 @@ public class TestResponse {
     Assertions.assertEquals("Unexpected producer error, please check logs for details", data.getMessage());
     Assertions.assertEquals(ExceptionFactory.PRODUCER_INNER_STATUS_CODE, response.getStatusCode());
 
-    ar.fail(InvocationType.PRODUCER, new RuntimeExceptionWithoutStackTrace("abc"));
+    ar.fail(InvocationType.PROVIDER, new RuntimeExceptionWithoutStackTrace("abc"));
     data = (CommonExceptionData) ((InvocationException) response.getResult()).getErrorData();
     Assertions.assertEquals("Unexpected producer error, please check logs for details", data.getMessage());
     Assertions.assertEquals(ExceptionFactory.PRODUCER_INNER_STATUS_CODE, response.getStatusCode());
@@ -90,7 +90,7 @@ public class TestResponse {
     Assertions.assertEquals("def", ((InvocationException) response.getResult()).getErrorData());
     Assertions.assertEquals(500, response.getStatusCode());
 
-    ar.fail(InvocationType.PRODUCER, producerException);
+    ar.fail(InvocationType.PROVIDER, producerException);
     Assertions.assertEquals("def", ((InvocationException) response.getResult()).getErrorData());
     Assertions.assertEquals(500, response.getStatusCode());
   }
@@ -121,7 +121,7 @@ public class TestResponse {
         ((InvocationException) r.getResult()).getErrorData().toString());
     Assertions.assertEquals(490, r.getStatusCode());
 
-    r = Response.createFail(InvocationType.PRODUCER, "def");
+    r = Response.createFail(InvocationType.PROVIDER, "def");
     Assertions.assertEquals("CommonExceptionData [message=def]",
         ((InvocationException) r.getResult()).getErrorData().toString());
     Assertions.assertEquals(590, r.getStatusCode());
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
index d5774c947..9d894e21c 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
@@ -28,7 +28,7 @@ import org.apache.servicecomb.core.Const;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.filter.ProducerFilter;
+import org.apache.servicecomb.core.filter.ProviderFilter;
 import org.apache.servicecomb.foundation.common.utils.AsyncUtils;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
@@ -36,7 +36,7 @@ import org.apache.servicecomb.transport.highway.message.ResponseHeader;
 
 import io.vertx.core.buffer.Buffer;
 
-public class HighwayServerCodecFilter implements ProducerFilter {
+public class HighwayServerCodecFilter implements ProviderFilter {
   public static final String NAME = "highway-server-codec";
 
   @Nonnull
@@ -48,7 +48,7 @@ public class HighwayServerCodecFilter implements ProducerFilter {
   @Override
   public int getOrder(InvocationType invocationType, String microservice) {
     // almost time, should be the first filter.
-    return Filter.PRODUCER_SCHEDULE_FILTER_ORDER - 2000;
+    return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 2000;
   }
 
   @Override
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
index 70f956ad6..563b38ae3 100644
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
+++ b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
@@ -60,7 +60,7 @@ public class RestClientTestBase {
 //            new RestClientSenderFilter(),
 //            new RestServerCodecFilter(),
 //            new ScheduleFilter(),
-//            new ProducerOperationFilter()
+//            new ProviderOperationFilter()
 //        ));
 //
 //    scbEngine.run();


[servicecomb-java-chassis] 01/03: [SCB-2801]remove unused code for new filter

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 78105e57716217aae1abffb583bd72d6494ba30f
Author: liubao <bi...@qq.com>
AuthorDate: Tue Aug 8 14:16:08 2023 +0800

    [SCB-2801]remove unused code for new filter
---
 .../common/rest/filter/HttpClientFilter.java       |  46 ----
 .../HttpClientFilterBeforeSendRequestExecutor.java |  92 -------
 .../common/rest/filter/HttpServerFilter.java       |  51 ----
 ...HttpServerFilterBeforeSendResponseExecutor.java |  92 -------
 .../rest/filter/inner/ClientRestArgsFilter.java    |  62 -----
 .../rest/filter/inner/ServerRestArgsFilter.java    |  94 -------
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 .../rest/filter/HttpClientFilterBaseForTest.java   |  41 ---
 .../rest/filter/HttpServerFilterBaseForTest.java   |  33 ---
 .../common/rest/filter/TestHttpClientFilter.java   |  33 ---
 .../common/rest/filter/TestHttpServerFilter.java   |  56 ----
 ...HttpServerFilterBeforeSendResponseExecutor.java |  71 -----
 .../filter/inner/TestServerRestArgsFilter.java     |  66 -----
 ...servicecomb.common.rest.filter.HttpServerFilter |  21 --
 .../jaxrs/server/JaxrsDemoHttpServerFilter.java    |  49 ----
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 demo/demo-signature/pom.xml                        |  40 ---
 .../demo/signature/ClientSignature.java            |  61 -----
 .../demo/signature/ServerSignature.java            |  54 ----
 .../servicecomb/demo/signature/SignatureUtils.java |  80 ------
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 demo/pom.xml                                       |   1 -
 .../edge/core/EdgeAddHeaderClientFilter.java       | 104 --------
 .../servicecomb/edge/core/EdgeAddHeaderFilter.java |  61 ++++-
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 ...servicecomb.common.rest.filter.HttpServerFilter |  18 --
 .../rest/client/http/DefaultHttpClientFilter.java  | 148 -----------
 ...servicecomb.common.rest.filter.HttpClientFilter |  18 --
 .../client/http/TestDefaultHttpClientFilter.java   | 293 ---------------------
 .../rest/servlet/ServletRestDispatcher.java        |  14 +-
 32 files changed, 62 insertions(+), 1745 deletions(-)

diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilter.java
deleted file mode 100644
index 3ae65ff94..000000000
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilter.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.common.rest.filter;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-
-public interface HttpClientFilter {
-  default boolean enabled() {
-    return true;
-  }
-
-  int getOrder();
-
-  /**
-   *  callback method before send a client request.
-   */
-  default CompletableFuture<Void> beforeSendRequestAsync(Invocation invocation, HttpServletRequestEx requestEx) {
-    return CompletableFuture.completedFuture(null);
-  }
-
-  /**
-   * @return if finished, then return a none null response<br>
-   * if return a null response, then sdk will call next filter.afterReceiveResponse
-   */
-  Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx);
-}
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBeforeSendRequestExecutor.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBeforeSendRequestExecutor.java
deleted file mode 100644
index b536aeb42..000000000
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBeforeSendRequestExecutor.java
+++ /dev/null
@@ -1,92 +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.servicecomb.common.rest.filter;
-
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-
-public class HttpClientFilterBeforeSendRequestExecutor {
-  private final List<HttpClientFilter> httpClientFilters;
-
-  private final Invocation invocation;
-
-  private final HttpServletRequestEx requestEx;
-
-  private int currentIndex;
-
-  private final CompletableFuture<Void> future = new CompletableFuture<>();
-
-  public HttpClientFilterBeforeSendRequestExecutor(List<HttpClientFilter> httpClientFilters, Invocation invocation,
-      HttpServletRequestEx requestEx) {
-    this.httpClientFilters = httpClientFilters;
-    this.invocation = invocation;
-    this.requestEx = requestEx;
-  }
-
-  public CompletableFuture<Void> run() {
-    doRun();
-
-    return future;
-  }
-
-  protected CompletableFuture<Void> safeInvoke(HttpClientFilter httpClientFilter) {
-    try {
-      if (httpClientFilter.enabled()) {
-        CompletableFuture<Void> future = httpClientFilter.beforeSendRequestAsync(invocation, requestEx);
-        if (future == null) {
-          future = new CompletableFuture<>();
-          future.completeExceptionally(new IllegalStateException(
-              "HttpClientFilter beforeSendRequestAsync can not return null. Class="
-                  + httpClientFilter.getClass()
-                  .getName()));
-        }
-        return future;
-      } else {
-        CompletableFuture<Void> eFuture = new CompletableFuture<>();
-        eFuture.complete(null);
-        return eFuture;
-      }
-    } catch (Throwable e) {
-      CompletableFuture<Void> eFuture = new CompletableFuture<>();
-      eFuture.completeExceptionally(e);
-      return eFuture;
-    }
-  }
-
-  protected void doRun() {
-    if (currentIndex == httpClientFilters.size()) {
-      future.complete(null);
-      return;
-    }
-
-    HttpClientFilter httpServerFilter = httpClientFilters.get(currentIndex);
-    currentIndex++;
-
-    CompletableFuture<Void> stepFuture = safeInvoke(httpServerFilter);
-    stepFuture.whenComplete((v, e) -> {
-      if (e == null) {
-        doRun();
-        return;
-      }
-
-      future.completeExceptionally(e);
-    });
-  }
-}
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilter.java
deleted file mode 100644
index 922e90725..000000000
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilter.java
+++ /dev/null
@@ -1,51 +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.servicecomb.common.rest.filter;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-
-public interface HttpServerFilter {
-  int getOrder();
-
-  default boolean enabled() {
-    return true;
-  }
-
-  default boolean needCacheRequest(OperationMeta operationMeta) {
-    return false;
-  }
-
-  /**
-   * @return if finished, then return a none null response<br>
-   * if return a null response, then sdk will call next filter.afterReceiveRequest
-   */
-  Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx requestEx);
-
-  /**
-   * callback method before send a server response.
-   */
-  default CompletableFuture<Void> beforeSendResponseAsync(Invocation invocation, HttpServletResponseEx responseEx) {
-    return CompletableFuture.completedFuture(null);
-  }
-}
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
deleted file mode 100644
index 3c3c23ef2..000000000
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBeforeSendResponseExecutor.java
+++ /dev/null
@@ -1,92 +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.servicecomb.common.rest.filter;
-
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-
-public class HttpServerFilterBeforeSendResponseExecutor {
-  private final List<HttpServerFilter> httpServerFilters;
-
-  private final Invocation invocation;
-
-  private final HttpServletResponseEx responseEx;
-
-  private int currentIndex;
-
-  private final CompletableFuture<Void> future = new CompletableFuture<>();
-
-  public HttpServerFilterBeforeSendResponseExecutor(List<HttpServerFilter> httpServerFilters, Invocation invocation,
-      HttpServletResponseEx responseEx) {
-    this.httpServerFilters = httpServerFilters;
-    this.invocation = invocation;
-    this.responseEx = responseEx;
-  }
-
-  public CompletableFuture<Void> run() {
-    doRun();
-
-    return future;
-  }
-
-  protected CompletableFuture<Void> safeInvoke(HttpServerFilter httpServerFilter) {
-    try {
-      if (httpServerFilter.enabled()) {
-        CompletableFuture<Void> future = httpServerFilter.beforeSendResponseAsync(invocation, responseEx);
-        if (future == null) {
-          future = new CompletableFuture<>();
-          future.completeExceptionally(new IllegalStateException(
-              "HttpServerFilter beforeSendResponseAsync can not return null. Class="
-                  + httpServerFilter.getClass()
-                  .getName()));
-        }
-        return future;
-      } else {
-        CompletableFuture<Void> eFuture = new CompletableFuture<>();
-        eFuture.complete(null);
-        return eFuture;
-      }
-    } catch (Throwable e) {
-      CompletableFuture<Void> eFuture = new CompletableFuture<>();
-      eFuture.completeExceptionally(e);
-      return eFuture;
-    }
-  }
-
-  protected void doRun() {
-    if (currentIndex == httpServerFilters.size()) {
-      future.complete(null);
-      return;
-    }
-
-    HttpServerFilter httpServerFilter = httpServerFilters.get(currentIndex);
-    currentIndex++;
-
-    CompletableFuture<Void> stepFuture = safeInvoke(httpServerFilter);
-    stepFuture.whenComplete((v, e) -> {
-      if (e == null) {
-        doRun();
-        return;
-      }
-
-      future.completeExceptionally(e);
-    });
-  }
-}
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java
deleted file mode 100644
index a53283343..000000000
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ClientRestArgsFilter.java
+++ /dev/null
@@ -1,62 +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.servicecomb.common.rest.filter.inner;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.common.rest.codec.RestCodec;
-import org.apache.servicecomb.common.rest.codec.param.RestClientRequestImpl;
-import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
-import org.apache.servicecomb.common.rest.filter.HttpClientFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-
-public class ClientRestArgsFilter implements HttpClientFilter {
-
-  @Override
-  public int getOrder() {
-    return -100;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendRequestAsync(Invocation invocation, HttpServletRequestEx requestEx) {
-    CompletableFuture<Void> result = new CompletableFuture<>();
-    RestClientRequestImpl restClientRequest = (RestClientRequestImpl) invocation.getHandlerContext()
-        .get(RestConst.INVOCATION_HANDLER_REQUESTCLIENT);
-    OperationMeta operationMeta = invocation.getOperationMeta();
-    RestOperationMeta swaggerRestOperation = operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-    try {
-      RestCodec.argsToRest(invocation.getSwaggerArguments(), swaggerRestOperation,
-          restClientRequest);
-      requestEx.setBodyBuffer(restClientRequest.getBodyBuffer());
-      result.complete(null);
-    } catch (Throwable e) {
-      result.completeExceptionally(e);
-    }
-    return result;
-  }
-
-  @Override
-  public Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx) {
-    return null;
-  }
-}
diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java
deleted file mode 100644
index 63ae8eea9..000000000
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/ServerRestArgsFilter.java
+++ /dev/null
@@ -1,94 +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.servicecomb.common.rest.filter.inner;
-
-import static org.apache.servicecomb.common.rest.filter.inner.RestServerCodecFilter.isDownloadFileResponseType;
-
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.common.rest.codec.RestCodec;
-import org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor;
-import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
-import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.foundation.common.utils.PartUtils;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.foundation.vertx.stream.BufferOutputStream;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.exception.ExceptionFactory;
-import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
-
-import com.netflix.config.DynamicPropertyFactory;
-
-import io.netty.buffer.Unpooled;
-
-public class ServerRestArgsFilter implements HttpServerFilter {
-  private static final boolean enabled = DynamicPropertyFactory.getInstance().getBooleanProperty
-      ("servicecomb.http.filter.server.serverRestArgs.enabled", true).get();
-
-  @Override
-  public int getOrder() {
-    return -100;
-  }
-
-  @Override
-  public boolean enabled() {
-    return enabled;
-  }
-
-  @Override
-  public Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx requestEx) {
-    OperationMeta operationMeta = invocation.getOperationMeta();
-    RestOperationMeta restOperationMeta = operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-    Map<String, Object> swaggerArguments = RestCodec.restToArgs(requestEx, restOperationMeta);
-    invocation.setSwaggerArguments(swaggerArguments);
-    return null;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendResponseAsync(Invocation invocation, HttpServletResponseEx responseEx) {
-    Response response = (Response) responseEx.getAttribute(RestConst.INVOCATION_HANDLER_RESPONSE);
-    ProduceProcessor produceProcessor =
-        (ProduceProcessor) responseEx.getAttribute(RestConst.INVOCATION_HANDLER_PROCESSOR);
-    Object body = response.getResult();
-    if (response.isFailed()) {
-      body = ((InvocationException) body).getErrorData();
-    }
-
-    if (null != invocation && isDownloadFileResponseType(invocation, response)) {
-      return responseEx.sendPart(PartUtils.getSinglePart(null, body));
-    }
-
-    responseEx.setContentType(produceProcessor.getName() + "; charset=utf-8");
-
-    CompletableFuture<Void> future = new CompletableFuture<>();
-    try (BufferOutputStream output = new BufferOutputStream(Unpooled.compositeBuffer())) {
-      produceProcessor.encodeResponse(output, body);
-
-      responseEx.setBodyBuffer(output.getBuffer());
-      future.complete(null);
-    } catch (Throwable e) {
-      future.completeExceptionally(ExceptionFactory.convertProducerException(e));
-    }
-    return future;
-  }
-}
diff --git a/common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter b/common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
deleted file mode 100644
index 6fccbe3e6..000000000
--- a/common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.common.rest.filter.inner.ClientRestArgsFilter
\ No newline at end of file
diff --git a/common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter b/common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
deleted file mode 100644
index 8b2ffebbc..000000000
--- a/common/common-rest/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.common.rest.filter.inner.ServerRestArgsFilter
\ No newline at end of file
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBaseForTest.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBaseForTest.java
deleted file mode 100644
index 7903b199e..000000000
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpClientFilterBaseForTest.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.servicecomb.common.rest.filter;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-
-public class HttpClientFilterBaseForTest implements HttpClientFilter {
-  @Override
-  public int getOrder() {
-    return 0;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendRequestAsync(Invocation invocation, HttpServletRequestEx requestEx) {
-    return null;
-  }
-
-  @Override
-  public Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx) {
-    return null;
-  }
-}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBaseForTest.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBaseForTest.java
deleted file mode 100644
index 24ccd95a8..000000000
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/HttpServerFilterBaseForTest.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.servicecomb.common.rest.filter;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-
-public class HttpServerFilterBaseForTest implements HttpServerFilter {
-  @Override
-  public int getOrder() {
-    return 0;
-  }
-
-  @Override
-  public Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx requestEx) {
-    return null;
-  }
-}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpClientFilter.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpClientFilter.java
deleted file mode 100644
index afc788b92..000000000
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpClientFilter.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.servicecomb.common.rest.filter;
-
-import java.util.Arrays;
-import java.util.concurrent.ExecutionException;
-
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-public class TestHttpClientFilter {
-  @Test
-  public void asyncFailed() {
-    HttpClientFilter filter = new HttpClientFilterBaseForTest();
-    HttpClientFilterBeforeSendRequestExecutor executor =
-        new HttpClientFilterBeforeSendRequestExecutor(Arrays.asList(filter), null, null);
-    Assertions.assertThrows(ExecutionException.class, () -> executor.run().get());
-  }
-}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilter.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilter.java
deleted file mode 100644
index a27073f17..000000000
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilter.java
+++ /dev/null
@@ -1,56 +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.servicecomb.common.rest.filter;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.test.scaffolding.exception.RuntimeExceptionWithoutStackTrace;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.Test;
-
-public class TestHttpServerFilter {
-
-  @Test
-  public void asyncSucc() throws InterruptedException, ExecutionException {
-    HttpServerFilter filter = new HttpServerFilterBaseForTest();
-
-    CompletableFuture<Void> future = filter.beforeSendResponseAsync(null, null);
-    Assertions.assertNull(future.get());
-  }
-
-  @Test
-  public void asyncFailed() throws InterruptedException, ExecutionException {
-    HttpServerFilter filter = new HttpServerFilterBaseForTest() {
-      @Override
-      public CompletableFuture<Void> beforeSendResponseAsync(Invocation invocation, HttpServletResponseEx responseEx) {
-        CompletableFuture<Void> result = new CompletableFuture<>();
-        result.completeExceptionally(new RuntimeExceptionWithoutStackTrace());
-        return result;
-      }
-    };
-
-    ExecutionException exception = Assertions.assertThrows(ExecutionException.class,
-        () -> {
-          CompletableFuture<Void> future = filter.beforeSendResponseAsync(null, null);
-          future.get();
-        });
-    Assertions.assertTrue(exception.getCause() instanceof RuntimeExceptionWithoutStackTrace);
-  }
-}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilterBeforeSendResponseExecutor.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilterBeforeSendResponseExecutor.java
deleted file mode 100644
index 169c2fda5..000000000
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/TestHttpServerFilterBeforeSendResponseExecutor.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.servicecomb.common.rest.filter;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.test.scaffolding.exception.RuntimeExceptionWithoutStackTrace;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.junit.jupiter.api.Assertions;
-
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-
-public class TestHttpServerFilterBeforeSendResponseExecutor {
-  @Mock
-  Invocation invocation;
-
-  @Mock
-  HttpServletResponseEx responseEx;
-
-  final List<HttpServerFilter> httpServerFilters = new ArrayList<>();
-
-  final HttpServerFilterBeforeSendResponseExecutor executor =
-      new HttpServerFilterBeforeSendResponseExecutor(httpServerFilters, invocation, responseEx);
-
-  @BeforeEach
-  public void setup() {
-    httpServerFilters.add(new HttpServerFilterBaseForTest());
-  }
-
-  @Test
-  public void runSucc() throws InterruptedException, ExecutionException {
-    CompletableFuture<Void> result = executor.run();
-
-    Assertions.assertNull(result.get());
-  }
-
-  @Test
-  public void runFail() throws InterruptedException, ExecutionException {
-    httpServerFilters.add(new HttpServerFilterBaseForTest() {
-      @Override
-      public CompletableFuture<Void> beforeSendResponseAsync(Invocation invocation, HttpServletResponseEx responseEx) {
-        throw new RuntimeExceptionWithoutStackTrace();
-      }
-    });
-
-    CompletableFuture<Void> result = executor.run();
-
-    ExecutionException exception = Assertions.assertThrows(ExecutionException.class, result::get);
-    Assertions.assertTrue(exception.getCause() instanceof RuntimeExceptionWithoutStackTrace);
-  }
-}
diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/TestServerRestArgsFilter.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/TestServerRestArgsFilter.java
deleted file mode 100644
index cdc9946ea..000000000
--- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/TestServerRestArgsFilter.java
+++ /dev/null
@@ -1,66 +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.servicecomb.common.rest.filter.inner;
-
-import jakarta.servlet.http.Part;
-
-import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.common.rest.codec.RestObjectMapperFactory;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.response.ResponsesMeta;
-import org.junit.jupiter.api.Assertions;
-
-import com.fasterxml.jackson.databind.type.TypeFactory;
-import org.junit.jupiter.api.Test;
-import org.mockito.Mockito;
-
-
-public class TestServerRestArgsFilter {
-
-  final Invocation invocation = Mockito.mock(Invocation.class);
-
-  final HttpServletResponseEx responseEx = Mockito.mock(HttpServletResponseEx.class);
-
-  final Response response = Mockito.mock(Response.class);
-
-  final Part part = Mockito.mock(Part.class);
-
-  boolean invokedSendPart;
-
-  final ServerRestArgsFilter filter = new ServerRestArgsFilter();
-
-  @Test
-  public void asyncBeforeSendResponse_part() {
-    ResponsesMeta responsesMeta = new ResponsesMeta();
-    responsesMeta.getResponseMap().put(202, RestObjectMapperFactory.getRestObjectMapper().constructType(Part.class));
-
-    Mockito.when(responseEx.getAttribute(RestConst.INVOCATION_HANDLER_RESPONSE)).thenReturn(response);
-    Mockito.when(response.getResult()).thenReturn(part);
-    Mockito.when(response.getStatusCode()).thenReturn(202);
-    Mockito.when(invocation.findResponseType(202)).thenReturn(TypeFactory.defaultInstance().constructType(Part.class));
-
-    Mockito.doAnswer(invocationOnMock -> {
-      invokedSendPart = true;
-      return null;
-    }).when(responseEx).sendPart(part);
-
-    Assertions.assertNull(filter.beforeSendResponseAsync(invocation, responseEx));
-    Assertions.assertTrue(invokedSendPart);
-  }
-}
diff --git a/demo/demo-edge/edge-service/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter b/demo/demo-edge/edge-service/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
deleted file mode 100644
index eb91526f3..000000000
--- a/demo/demo-edge/edge-service/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-org.apache.servicecomb.demo.edge.service.encrypt.filter.EdgeSignatureRequestFilter
-org.apache.servicecomb.demo.edge.service.encrypt.filter.DecodeBodyFilter
-org.apache.servicecomb.demo.edge.service.encrypt.filter.UserIdFilter
-org.apache.servicecomb.demo.edge.service.encrypt.filter.EdgeSignatureResponseFilter
\ No newline at end of file
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsDemoHttpServerFilter.java b/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsDemoHttpServerFilter.java
deleted file mode 100644
index 726a3aeed..000000000
--- a/demo/demo-jaxrs/jaxrs-server/src/main/java/org/apache/servicecomb/demo/jaxrs/server/JaxrsDemoHttpServerFilter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.demo.jaxrs.server;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class JaxrsDemoHttpServerFilter implements HttpServerFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(JaxrsDemoHttpServerFilter.class);
-
-  @Override
-  public int getOrder() {
-    return 0;
-  }
-
-  @Override
-  public Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx requestEx) {
-    return null;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendResponseAsync(Invocation invocation, HttpServletResponseEx responseEx) {
-    // in 404 situation, invocation is null and a NPE is thrown
-    LOGGER.info("JaxrsDemoHttpServerFilter is called, operation=[{}]", invocation.getOperationName());
-    return CompletableFuture.completedFuture(null);
-  }
-}
diff --git a/demo/demo-jaxrs/jaxrs-server/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter b/demo/demo-jaxrs/jaxrs-server/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
deleted file mode 100644
index 5e737d86d..000000000
--- a/demo/demo-jaxrs/jaxrs-server/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.demo.jaxrs.server.JaxrsDemoHttpServerFilter
\ No newline at end of file
diff --git a/demo/demo-signature/pom.xml b/demo/demo-signature/pom.xml
deleted file mode 100644
index e4e35f3f8..000000000
--- a/demo/demo-signature/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.apache.servicecomb.demo</groupId>
-    <artifactId>demo-parent</artifactId>
-    <version>3.0.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>demo-signature</artifactId>
-  <name>Java Chassis::Demo::Signature</name>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>common-rest</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.servicecomb</groupId>
-      <artifactId>registry-service-center</artifactId>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ClientSignature.java b/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ClientSignature.java
deleted file mode 100644
index 833948f76..000000000
--- a/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ClientSignature.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.demo.signature;
-
-import java.util.concurrent.CompletableFuture;
-
-import jakarta.ws.rs.core.Response.Status;
-
-import org.apache.servicecomb.common.rest.filter.HttpClientFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ClientSignature implements HttpClientFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(ClientSignature.class);
-
-  @Override
-  public int getOrder() {
-    return 0;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendRequestAsync(Invocation invocation, HttpServletRequestEx requestEx) {
-    String signature = SignatureUtils.genSignature(requestEx);
-    requestEx.setHeader("signature", signature);
-    return CompletableFuture.completedFuture(null);
-  }
-
-  @Override
-  public Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx) {
-    String signature = SignatureUtils.genSignature(responseEx);
-    String serverSignature = responseEx.getHeader("signature");
-
-    if (serverSignature != null) {
-      LOGGER.debug("check response signature, client: {}, server: {}.", signature, serverSignature);
-      if (!signature.equals(serverSignature)) {
-        LOGGER.error("check response signature failed");
-        return Response.create(Status.UNAUTHORIZED, "check response signature failed");
-      }
-    }
-    return null;
-  }
-}
diff --git a/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ServerSignature.java b/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ServerSignature.java
deleted file mode 100644
index b39b60371..000000000
--- a/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/ServerSignature.java
+++ /dev/null
@@ -1,54 +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.servicecomb.demo.signature;
-
-import java.util.concurrent.CompletableFuture;
-
-import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-
-public class ServerSignature implements HttpServerFilter {
-  public ServerSignature() {
-  }
-
-  @Override
-  public int getOrder() {
-    return 0;
-  }
-
-  @Override
-  public boolean needCacheRequest(OperationMeta operationMeta) {
-    return true;
-  }
-
-  @Override
-  public Response afterReceiveRequest(Invocation invocation, HttpServletRequestEx requestEx) {
-    return null;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendResponseAsync(Invocation invocation, HttpServletResponseEx responseEx) {
-    String signature = SignatureUtils.genSignature(responseEx);
-    responseEx.addHeader("signature", signature);
-    return CompletableFuture.completedFuture(null);
-  }
-}
diff --git a/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/SignatureUtils.java b/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/SignatureUtils.java
deleted file mode 100644
index 41c334c85..000000000
--- a/demo/demo-signature/src/main/java/org/apache/servicecomb/demo/signature/SignatureUtils.java
+++ /dev/null
@@ -1,80 +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.servicecomb.demo.signature;
-
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-
-import jakarta.ws.rs.core.MediaType;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-
-import com.google.common.hash.Hasher;
-import com.google.common.hash.Hashing;
-import com.netflix.config.DynamicStringListProperty;
-
-public class SignatureUtils {
-  private static final DynamicStringListProperty PARAM_NAMES_PROPERTY =
-      new DynamicStringListProperty("servicecomb.demo.signature.param-names", Arrays.asList("userId"));
-
-  private static List<String> paramNames = PARAM_NAMES_PROPERTY.get();
-
-  static {
-    PARAM_NAMES_PROPERTY.addCallback(() -> {
-      List<String> tmpNames = PARAM_NAMES_PROPERTY.get();
-      tmpNames.sort(Comparator.naturalOrder());
-      paramNames = tmpNames;
-    });
-  }
-
-  public static String genSignature(HttpServletRequestEx requestEx) {
-    Hasher hasher = Hashing.sha256().newHasher();
-    hasher.putString(requestEx.getRequestURI(), StandardCharsets.UTF_8);
-    for (String paramName : paramNames) {
-      String paramValue = requestEx.getHeader(paramName);
-      if (paramValue != null) {
-        hasher.putString(paramName, StandardCharsets.UTF_8);
-        hasher.putString(paramValue, StandardCharsets.UTF_8);
-        System.out.printf("%s %s\n", paramName, paramValue);
-      }
-    }
-
-    if (!StringUtils.startsWithIgnoreCase(requestEx.getContentType(), MediaType.APPLICATION_FORM_URLENCODED)) {
-      byte[] bytes = requestEx.getBodyBytes();
-      if (bytes != null) {
-        hasher.putBytes(bytes, 0, requestEx.getBodyBytesLength());
-      }
-    }
-
-    return hasher.hash().toString();
-  }
-
-  public static String genSignature(HttpServletResponseEx responseEx) {
-    Hasher hasher = Hashing.sha256().newHasher();
-    byte[] bytes = responseEx.getBodyBytes();
-    if (bytes != null) {
-      hasher.putBytes(bytes, 0, responseEx.getBodyBytesLength());
-    }
-
-    return hasher.hash().toString();
-  }
-}
diff --git a/demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter b/demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
deleted file mode 100644
index 9533c7956..000000000
--- a/demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.demo.signature.ClientSignature
diff --git a/demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter b/demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
deleted file mode 100644
index 37d767122..000000000
--- a/demo/demo-signature/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.demo.signature.ServerSignature
diff --git a/demo/pom.xml b/demo/pom.xml
index 7ad42adf4..06b7a9fd2 100644
--- a/demo/pom.xml
+++ b/demo/pom.xml
@@ -53,7 +53,6 @@
     <module>demo-edge</module>
     <module>demo-multiple</module>
     <module>demo-multi-service-center</module>
-    <module>demo-signature</module>
     <module>demo-cse-v1</module>
     <module>demo-cse-v2</module>
   </modules>
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java
deleted file mode 100644
index 49258fab9..000000000
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderClientFilter.java
+++ /dev/null
@@ -1,104 +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.servicecomb.edge.core;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.concurrent.CompletableFuture;
-import java.util.function.BiConsumer;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.servicecomb.common.rest.filter.HttpClientFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.netflix.config.ConfigurationManager;
-import com.netflix.config.DynamicPropertyFactory;
-
-public class EdgeAddHeaderClientFilter implements HttpClientFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(EdgeAddHeaderClientFilter.class);
-
-  private static final String PREFIX = "servicecomb.edge.filter.addHeader";
-
-  private static final String KEY_ENABLED = PREFIX + ".enabled";
-
-  private static final String KEY_HEADERS = PREFIX + ".allowedHeaders";
-
-  private List<String> publicHeaders = new ArrayList<>();
-
-  private boolean enabled = false;
-
-  public EdgeAddHeaderClientFilter() {
-    init();
-    ConfigurationManager.getConfigInstance()
-        .addConfigurationListener(event -> {
-          if (StringUtils.startsWith(event.getPropertyName(), PREFIX)) {
-            LOGGER.info("Public headers config have been changed. Event=" + event.getType());
-            init();
-          }
-        });
-  }
-
-  private void init() {
-    enabled = DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, false).get();
-    String publicHeaderStr = DynamicPropertyFactory.getInstance().getStringProperty(KEY_HEADERS, "").get();
-    String[] split = publicHeaderStr.split(",");
-    if (split.length > 0) {
-      publicHeaders = Arrays.asList(split);
-    }
-  }
-
-  @Override
-  public int getOrder() {
-    return 0;
-  }
-
-  @Override
-  public boolean enabled() {
-    return enabled;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendRequestAsync(Invocation invocation, HttpServletRequestEx requestEx) {
-    addHeaders(invocation, requestEx::addHeader);
-    return CompletableFuture.completedFuture(null);
-  }
-
-  public void addHeaders(Invocation invocation, BiConsumer<String, String> headerAdder) {
-    if (!invocation.isEdge()) {
-      return;
-    }
-
-    HttpServletRequestEx oldRequest = invocation.getRequestEx();
-    publicHeaders.forEach(key -> {
-      String value = oldRequest.getHeader(key);
-      if (StringUtils.isNotEmpty(value)) {
-        headerAdder.accept(key, value);
-      }
-    });
-  }
-
-  @Override
-  public Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx) {
-    return null;
-  }
-}
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
index 8962ed181..333a36edf 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
@@ -16,22 +16,63 @@
  */
 package org.apache.servicecomb.edge.core;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 import java.util.concurrent.CompletableFuture;
+import java.util.function.BiConsumer;
 
 import javax.annotation.Nonnull;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.ConsumerFilter;
 import org.apache.servicecomb.core.filter.Filter;
 import org.apache.servicecomb.core.filter.FilterNode;
+import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.transport.rest.client.RestClientTransportContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.netflix.config.ConfigurationManager;
+import com.netflix.config.DynamicPropertyFactory;
 
 public class EdgeAddHeaderFilter implements ConsumerFilter {
+  private static final Logger LOGGER = LoggerFactory.getLogger(EdgeAddHeaderFilter.class);
+
   public static final String NAME = "edge-add-headers";
 
-  private final EdgeAddHeaderClientFilter filter = new EdgeAddHeaderClientFilter();
+  private static final String PREFIX = "servicecomb.edge.filter.addHeader";
+
+  private static final String KEY_ENABLED = PREFIX + ".enabled";
+
+  private static final String KEY_HEADERS = PREFIX + ".allowedHeaders";
+
+  private List<String> publicHeaders = new ArrayList<>();
+
+  private boolean enabled = false;
+
+  public EdgeAddHeaderFilter() {
+    init();
+    ConfigurationManager.getConfigInstance()
+        .addConfigurationListener(event -> {
+          if (StringUtils.startsWith(event.getPropertyName(), PREFIX)) {
+            LOGGER.info("Public headers config have been changed. Event=" + event.getType());
+            init();
+          }
+        });
+  }
+
+  private void init() {
+    enabled = DynamicPropertyFactory.getInstance().getBooleanProperty(KEY_ENABLED, false).get();
+    String publicHeaderStr = DynamicPropertyFactory.getInstance().getStringProperty(KEY_HEADERS, "").get();
+    String[] split = publicHeaderStr.split(",");
+    if (split.length > 0) {
+      publicHeaders = Arrays.asList(split);
+    }
+  }
 
   @Nonnull
   @Override
@@ -41,7 +82,7 @@ public class EdgeAddHeaderFilter implements ConsumerFilter {
 
   @Override
   public boolean isEnabledForTransport(String transport) {
-    return filter.enabled();
+    return enabled;
   }
 
   @Override
@@ -54,10 +95,24 @@ public class EdgeAddHeaderFilter implements ConsumerFilter {
     RestClientTransportContext transportContext = invocation.getTransportContext();
     if (transportContext != null) {
       return CompletableFuture.completedFuture(null)
-          .thenAccept(v -> filter.addHeaders(invocation, transportContext.getHttpClientRequest()::putHeader))
+          .thenAccept(v -> addHeaders(invocation, transportContext.getHttpClientRequest()::putHeader))
           .thenCompose(v -> nextNode.onFilter(invocation));
     }
     // normal consumer in edge process
     return nextNode.onFilter(invocation);
   }
+
+  public void addHeaders(Invocation invocation, BiConsumer<String, String> headerAdder) {
+    if (!invocation.isEdge()) {
+      return;
+    }
+
+    HttpServletRequestEx oldRequest = invocation.getRequestEx();
+    publicHeaders.forEach(key -> {
+      String value = oldRequest.getHeader(key);
+      if (StringUtils.isNotEmpty(value)) {
+        headerAdder.accept(key, value);
+      }
+    });
+  }
 }
diff --git a/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter b/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
deleted file mode 100644
index c07a4b762..000000000
--- a/edge/edge-core/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.edge.core.EdgeAddHeaderClientFilter
diff --git a/handlers/handler-router/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter b/handlers/handler-router/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
deleted file mode 100644
index 065e42fad..000000000
--- a/handlers/handler-router/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpServerFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.router.custom.RouterAddHeaderFilter
\ No newline at end of file
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/DefaultHttpClientFilter.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/DefaultHttpClientFilter.java
deleted file mode 100644
index e3016022a..000000000
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/DefaultHttpClientFilter.java
+++ /dev/null
@@ -1,148 +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.servicecomb.transport.rest.client.http;
-
-import java.util.Collection;
-import java.util.concurrent.CompletableFuture;
-
-import jakarta.ws.rs.core.HttpHeaders;
-
-import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor;
-import org.apache.servicecomb.common.rest.codec.produce.ProduceProcessorManager;
-import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
-import org.apache.servicecomb.common.rest.filter.HttpClientFilter;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.context.HttpStatus;
-import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
-import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.databind.JavaType;
-import com.netflix.config.DynamicPropertyFactory;
-
-public class DefaultHttpClientFilter implements HttpClientFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(DefaultHttpClientFilter.class);
-
-  private static final boolean enabled = DynamicPropertyFactory.getInstance().getBooleanProperty
-      ("servicecomb.http.filter.client.default.enabled", true).get();
-
-  @Override
-  public int getOrder() {
-    return 10000;
-  }
-
-  @Override
-  public CompletableFuture<Void> beforeSendRequestAsync(Invocation invocation, HttpServletRequestEx requestEx) {
-    return CompletableFuture.completedFuture(null);
-  }
-
-  @Override
-  public boolean enabled() {
-    return enabled;
-  }
-
-  protected ProduceProcessor findProduceProcessor(RestOperationMeta restOperation,
-      HttpServletResponseEx responseEx) {
-    String contentType = responseEx.getHeader(HttpHeaders.CONTENT_TYPE);
-    if (contentType == null) {
-      return null;
-    }
-
-    String contentTypeForFind = contentType;
-    int idx = contentType.indexOf(';');
-    if (idx != -1) {
-      contentTypeForFind = contentType.substring(0, idx);
-    }
-    return restOperation.findProduceProcessor(contentTypeForFind);
-  }
-
-  protected Response extractResponse(Invocation invocation, HttpServletResponseEx responseEx) {
-    Object result = invocation.getHandlerContext().get(RestConst.READ_STREAM_PART);
-    if (result != null) {
-      return Response.create(responseEx.getStatusType(), result);
-    }
-
-    OperationMeta operationMeta = invocation.getOperationMeta();
-    JavaType responseType = invocation.findResponseType(responseEx.getStatus());
-    RestOperationMeta swaggerRestOperation = operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-    ProduceProcessor produceProcessor = findProduceProcessor(swaggerRestOperation, responseEx);
-    if (produceProcessor == null) {
-      // This happens outside the runtime such as Servlet filter response. Here we give a default json parser to it
-      // and keep user data not get lose.
-      String msg =
-          String.format("method %s, path %s, statusCode %d, reasonPhrase %s, response content-type %s is not supported",
-              swaggerRestOperation.getHttpMethod(),
-              swaggerRestOperation.getAbsolutePath(),
-              responseEx.getStatus(),
-              responseEx.getStatusType().getReasonPhrase(),
-              responseEx.getHeader(HttpHeaders.CONTENT_TYPE));
-      LOGGER.warn(msg);
-      produceProcessor = ProduceProcessorManager.INSTANCE.findDefaultProcessor();
-    }
-
-    try {
-      result = produceProcessor.decodeResponse(responseEx.getBodyBuffer(), responseType);
-      Response response = Response.create(responseEx.getStatusType(), result);
-      if (response.isFailed()) {
-        LOGGER.warn("invoke operation [{}] failed, status={}, msg={}", invocation.getMicroserviceQualifiedName(),
-            responseEx.getStatusType().getStatusCode(), result == null ? "" : result.toString());
-      }
-      return response;
-    } catch (Exception e) {
-      LOGGER.error("failed to decode response body, exception is [{}]", e.getMessage());
-      String msg =
-          String.format("method %s, path %s, statusCode %d, reasonPhrase %s, response content-type %s is not supported",
-              swaggerRestOperation.getHttpMethod(),
-              swaggerRestOperation.getAbsolutePath(),
-              responseEx.getStatus(),
-              responseEx.getStatusType().getReasonPhrase(),
-              responseEx.getHeader(HttpHeaders.CONTENT_TYPE));
-      if (HttpStatus.isSuccess(responseEx.getStatus())) {
-        return Response.createConsumerFail(
-            new InvocationException(400, responseEx.getStatusType().getReasonPhrase(),
-                new CommonExceptionData(msg), e));
-      }
-      return Response.createConsumerFail(
-          new InvocationException(responseEx.getStatus(), responseEx.getStatusType().getReasonPhrase(),
-              new CommonExceptionData(msg), e));
-    }
-  }
-
-  @Override
-  public Response afterReceiveResponse(Invocation invocation, HttpServletResponseEx responseEx) {
-    Response response = extractResponse(invocation, responseEx);
-
-    for (String headerName : responseEx.getHeaderNames()) {
-      if (headerName.equals(":status")) {
-        continue;
-      }
-      Collection<String> headerValues = responseEx.getHeaders(headerName);
-      for (String headerValue : headerValues) {
-        response.addHeader(headerName, headerValue);
-      }
-    }
-
-    return response;
-  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter b/transports/transport-rest/transport-rest-client/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
deleted file mode 100644
index 8addf988d..000000000
--- a/transports/transport-rest/transport-rest-client/src/main/resources/META-INF/services/org.apache.servicecomb.common.rest.filter.HttpClientFilter
+++ /dev/null
@@ -1,18 +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.
-#
-
-org.apache.servicecomb.transport.rest.client.http.DefaultHttpClientFilter
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestDefaultHttpClientFilter.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestDefaultHttpClientFilter.java
deleted file mode 100644
index fb687a57c..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/http/TestDefaultHttpClientFilter.java
+++ /dev/null
@@ -1,293 +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.servicecomb.transport.rest.client.http;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.Response.Status;
-
-import org.apache.servicecomb.common.rest.RestConst;
-import org.apache.servicecomb.common.rest.codec.produce.ProduceJsonProcessor;
-import org.apache.servicecomb.common.rest.codec.produce.ProduceProcessor;
-import org.apache.servicecomb.common.rest.definition.RestOperationMeta;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.definition.OperationMeta;
-import org.apache.servicecomb.foundation.common.utils.JsonUtils;
-import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
-import org.apache.servicecomb.foundation.vertx.http.ReadStreamPart;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
-import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
-import org.junit.Test;
-
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.SimpleType;
-
-import io.vertx.core.MultiMap;
-import io.vertx.core.buffer.Buffer;
-import io.vertx.core.buffer.impl.BufferImpl;
-import mockit.Expectations;
-import mockit.Mock;
-import mockit.MockUp;
-import mockit.Mocked;
-import org.junit.jupiter.api.Assertions;
-
-public class TestDefaultHttpClientFilter {
-  private final DefaultHttpClientFilter filter = new DefaultHttpClientFilter();
-
-  @Test
-  public void testOrder() {
-    Assertions.assertEquals(10000, filter.getOrder());
-  }
-
-  @Test
-  public void testFindProduceProcessorNullContentType(@Mocked RestOperationMeta restOperation,
-      @Mocked HttpServletResponseEx responseEx) {
-    new Expectations() {
-      {
-        responseEx.getHeader(HttpHeaders.CONTENT_TYPE);
-        result = null;
-      }
-    };
-
-    Assertions.assertNull(filter.findProduceProcessor(restOperation, responseEx));
-  }
-
-  @Test
-  public void testFindProduceProcessorJson(@Mocked RestOperationMeta restOperation,
-      @Mocked HttpServletResponseEx responseEx, @Mocked ProduceProcessor produceProcessor) {
-    new Expectations() {
-      {
-        responseEx.getHeader(HttpHeaders.CONTENT_TYPE);
-        result = "json";
-        restOperation.findProduceProcessor("json");
-        result = produceProcessor;
-      }
-    };
-
-    Assertions.assertSame(produceProcessor, filter.findProduceProcessor(restOperation, responseEx));
-  }
-
-  @Test
-  public void testFindProduceProcessorJsonWithCharset(@Mocked RestOperationMeta restOperation,
-      @Mocked HttpServletResponseEx responseEx, @Mocked ProduceProcessor produceProcessor) {
-    new Expectations() {
-      {
-        responseEx.getHeader(HttpHeaders.CONTENT_TYPE);
-        result = "json; UTF-8";
-        restOperation.findProduceProcessor("json");
-        result = produceProcessor;
-      }
-    };
-
-    Assertions.assertSame(produceProcessor, filter.findProduceProcessor(restOperation, responseEx));
-  }
-
-  @Test
-  public void extractResult_readStreamPart(@Mocked Invocation invocation, @Mocked ReadStreamPart part,
-      @Mocked HttpServletResponseEx responseEx) {
-    Map<String, Object> handlerContext = new HashMap<>();
-    handlerContext.put(RestConst.READ_STREAM_PART, part);
-    new Expectations() {
-      {
-        invocation.getHandlerContext();
-        result = handlerContext;
-        responseEx.getStatusType();
-        result = Status.OK;
-      }
-    };
-
-    Response response = filter.extractResponse(invocation, responseEx);
-    Assertions.assertSame(part, response.getResult());
-    Assertions.assertEquals(Status.OK, response.getStatus());
-  }
-
-  @Test
-  public void extractResult_decodeError(@Mocked Invocation invocation, @Mocked ReadStreamPart part,
-      @Mocked OperationMeta operationMeta,
-      @Mocked RestOperationMeta swaggerRestOperation,
-      @Mocked HttpServletResponseEx responseEx) {
-    Map<String, Object> handlerContext = new HashMap<>();
-    new Expectations() {
-      {
-        invocation.getHandlerContext();
-        result = handlerContext;
-        invocation.getOperationMeta();
-        result = operationMeta;
-        invocation.findResponseType(400);
-        result = SimpleType.constructUnsafe(Date.class);
-        operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-        result = swaggerRestOperation;
-        responseEx.getStatus();
-        result = 400;
-        responseEx.getBodyBuffer();
-        result = new BufferImpl().appendString("abc");
-      }
-    };
-    new MockUp<DefaultHttpClientFilter>() {
-      @Mock
-      ProduceProcessor findProduceProcessor(RestOperationMeta restOperation, HttpServletResponseEx responseEx) {
-        return new ProduceJsonProcessor();
-      }
-    };
-
-    Response response = filter.extractResponse(invocation, responseEx);
-    Assertions.assertEquals(400, response.getStatusCode());
-    Assertions.assertEquals(InvocationException.class, response.<InvocationException>getResult().getClass());
-    InvocationException invocationException = response.getResult();
-    Assertions.assertEquals(
-        "InvocationException: code=400;msg=CommonExceptionData [message=method null, path null, statusCode 400, reasonPhrase null, response content-type null is not supported]",
-        invocationException.getMessage());
-    Assertions.assertEquals(
-        "Unrecognized token 'abc': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n"
-            + " at [Source: (org.apache.servicecomb.foundation.vertx.stream.BufferInputStream); line: 1, column: 4]",
-        invocationException.getCause().getMessage());
-    Assertions.assertEquals(CommonExceptionData.class, invocationException.getErrorData().getClass());
-    CommonExceptionData commonExceptionData = (CommonExceptionData) invocationException.getErrorData();
-    Assertions.assertEquals(
-        "method null, path null, statusCode 400, reasonPhrase null, response content-type null is not supported",
-        commonExceptionData.getMessage());
-  }
-
-  @Test
-  public void extractResult_decodeError200(@Mocked Invocation invocation, @Mocked ReadStreamPart part,
-      @Mocked OperationMeta operationMeta,
-      @Mocked RestOperationMeta swaggerRestOperation,
-      @Mocked HttpServletResponseEx responseEx) {
-    Map<String, Object> handlerContext = new HashMap<>();
-    new Expectations() {
-      {
-        invocation.getHandlerContext();
-        result = handlerContext;
-        invocation.getOperationMeta();
-        result = operationMeta;
-        invocation.findResponseType(200);
-        result = SimpleType.constructUnsafe(Date.class);
-        operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-        result = swaggerRestOperation;
-        responseEx.getStatus();
-        result = 200;
-        responseEx.getBodyBuffer();
-        result = new BufferImpl().appendString("abc");
-      }
-    };
-    new MockUp<DefaultHttpClientFilter>() {
-      @Mock
-      ProduceProcessor findProduceProcessor(RestOperationMeta restOperation, HttpServletResponseEx responseEx) {
-        return new ProduceJsonProcessor();
-      }
-    };
-
-    Response response = filter.extractResponse(invocation, responseEx);
-    Assertions.assertEquals(400, response.getStatusCode());
-    Assertions.assertEquals(InvocationException.class, response.<InvocationException>getResult().getClass());
-    InvocationException invocationException = response.getResult();
-    Assertions.assertEquals(
-        "InvocationException: code=400;msg=CommonExceptionData [message=method null, path null, statusCode 200, reasonPhrase null, response content-type null is not supported]",
-        invocationException.getMessage());
-    Assertions.assertEquals(
-        "Unrecognized token 'abc': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')\n"
-            + " at [Source: (org.apache.servicecomb.foundation.vertx.stream.BufferInputStream); line: 1, column: 4]",
-        invocationException.getCause().getMessage());
-    Assertions.assertEquals(CommonExceptionData.class, invocationException.getErrorData().getClass());
-    CommonExceptionData commonExceptionData = (CommonExceptionData) invocationException.getErrorData();
-    Assertions.assertEquals(
-        "method null, path null, statusCode 200, reasonPhrase null, response content-type null is not supported",
-        commonExceptionData.getMessage());
-  }
-
-  @Test
-  public void testAfterReceiveResponseNullProduceProcessor(@Mocked Invocation invocation,
-      @Mocked HttpServletResponseEx responseEx,
-      @Mocked OperationMeta operationMeta,
-      @Mocked RestOperationMeta swaggerRestOperation) throws Exception {
-    CommonExceptionData data = new CommonExceptionData("abcd");
-    new Expectations() {
-      {
-        invocation.getOperationMeta();
-        result = operationMeta;
-        operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-        result = swaggerRestOperation;
-        invocation.findResponseType(403);
-        result = SimpleType.constructUnsafe(CommonExceptionData.class);
-        responseEx.getStatus();
-        result = 403;
-        responseEx.getStatusType();
-        result = Status.FORBIDDEN;
-        responseEx.getBodyBuffer();
-        result = Buffer.buffer(JsonUtils.writeValueAsString(data).getBytes());
-      }
-    };
-
-    Response response = filter.afterReceiveResponse(invocation, responseEx);
-    Assertions.assertEquals(403, response.getStatusCode());
-    Assertions.assertEquals("Forbidden", response.getReasonPhrase());
-    Assertions.assertEquals(InvocationException.class, response.<InvocationException>getResult().getClass());
-    InvocationException invocationException = response.getResult();
-    Assertions.assertEquals(
-        403,
-        invocationException.getStatusCode());
-    Assertions.assertEquals(
-        "CommonExceptionData [message=abcd]",
-        invocationException.getErrorData().toString());
-  }
-
-  @Test
-  public void testAfterReceiveResponseNormal(@Mocked Invocation invocation,
-      @Mocked HttpServletResponseEx responseEx,
-      @Mocked Buffer bodyBuffer,
-      @Mocked OperationMeta operationMeta,
-      @Mocked RestOperationMeta swaggerRestOperation,
-      @Mocked ProduceProcessor produceProcessor) throws Exception {
-    MultiMap responseHeader = MultiMap.caseInsensitiveMultiMap();
-    responseHeader.add("b", "bValue");
-
-    Object decodedResult = new Object();
-    new Expectations() {
-      {
-        responseEx.getHeader(HttpHeaders.CONTENT_TYPE);
-        result = "json";
-        responseEx.getHeaderNames();
-        result = Arrays.asList("a", "b");
-        responseEx.getHeaders("b");
-        result = responseHeader.getAll("b");
-        swaggerRestOperation.findProduceProcessor("json");
-        result = produceProcessor;
-        produceProcessor.decodeResponse(bodyBuffer, (JavaType) any);
-        result = decodedResult;
-
-        invocation.getOperationMeta();
-        result = operationMeta;
-        operationMeta.getExtData(RestConst.SWAGGER_REST_OPERATION);
-        result = swaggerRestOperation;
-
-        responseEx.getStatusType();
-        result = Status.OK;
-      }
-    };
-
-    Response response = filter.afterReceiveResponse(invocation, responseEx);
-    Assertions.assertSame(decodedResult, response.getResult());
-    Assertions.assertEquals(1, response.getHeaders().size());
-    Assertions.assertEquals(response.getHeaders("b"), Arrays.asList("bValue"));
-  }
-}
diff --git a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletRestDispatcher.java b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletRestDispatcher.java
index 09f876ab5..0abb898ed 100644
--- a/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletRestDispatcher.java
+++ b/transports/transport-rest/transport-rest-servlet/src/main/java/org/apache/servicecomb/transport/rest/servlet/ServletRestDispatcher.java
@@ -17,25 +17,21 @@
 
 package org.apache.servicecomb.transport.rest.servlet;
 
-import java.util.List;
-
-import jakarta.servlet.AsyncContext;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-
 import org.apache.servicecomb.common.rest.RestProducerInvocationFlow;
-import org.apache.servicecomb.common.rest.filter.HttpServerFilter;
 import org.apache.servicecomb.core.Const;
 import org.apache.servicecomb.core.SCBEngine;
 import org.apache.servicecomb.core.Transport;
 import org.apache.servicecomb.core.definition.MicroserviceMeta;
 import org.apache.servicecomb.core.invocation.InvocationCreator;
-import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletRequestEx;
 import org.apache.servicecomb.foundation.vertx.http.HttpServletResponseEx;
 import org.apache.servicecomb.foundation.vertx.http.StandardHttpServletRequestEx;
 import org.apache.servicecomb.foundation.vertx.http.StandardHttpServletResponseEx;
 
+import jakarta.servlet.AsyncContext;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
 public class ServletRestDispatcher {
   private final RestAsyncListener restAsyncListener = new RestAsyncListener();
 
@@ -43,8 +39,6 @@ public class ServletRestDispatcher {
 
   private MicroserviceMeta microserviceMeta;
 
-  private final List<HttpServerFilter> httpServerFilters = SPIServiceUtils.getSortedService(HttpServerFilter.class);
-
   public void service(HttpServletRequest request, HttpServletResponse response) {
     if (transport == null) {
       transport = SCBEngine.getInstance().getTransportManager().findTransport(Const.RESTFUL);