363230482 closed pull request #2587:  typo: exceptionClassses -> 
exceptionClasses
URL: https://github.com/apache/incubator-dubbo/pull/2587
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/.travis.yml b/.travis.yml
index 32306778b3..f1a1bf5c1a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -3,6 +3,8 @@ sudo: false # faster builds
 
 jdk:
   - oraclejdk11
+  - oraclejdk10
+  - oraclejdk9
   - oraclejdk8
 
 cache:
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
index 0cea0b859f..52f5811277 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/AbstractDirectory.java
@@ -59,9 +59,8 @@ public AbstractDirectory(URL url, List<Router> routers) {
     }
 
     public AbstractDirectory(URL url, URL consumerUrl, List<Router> routers) {
-        if (url == null) {
+        if (url == null)
             throw new IllegalArgumentException("url == null");
-        }
         this.url = url;
         this.consumerUrl = consumerUrl;
         setRouters(routers);
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java
index cc6bab3c9e..47a0d12bc7 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectory.java
@@ -46,9 +46,8 @@ public StaticDirectory(URL url, List<Invoker<T>> invokers) {
 
     public StaticDirectory(URL url, List<Invoker<T>> invokers, List<Router> 
routers) {
         super(url == null && invokers != null && !invokers.isEmpty() ? 
invokers.get(0).getUrl() : url, routers);
-        if (invokers == null || invokers.isEmpty()) {
+        if (invokers == null || invokers.isEmpty())
             throw new IllegalArgumentException("invokers == null");
-        }
         this.invokers = invokers;
     }
 
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
index 7a8d0aaaba..ff94b3cf57 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AbstractLoadBalance.java
@@ -37,12 +37,10 @@ static int calculateWarmupWeight(int uptime, int warmup, 
int weight) {
 
     @Override
     public <T> Invoker<T> select(List<Invoker<T>> invokers, URL url, 
Invocation invocation) {
-        if (invokers == null || invokers.isEmpty()) {
+        if (invokers == null || invokers.isEmpty())
             return null;
-        }
-        if (invokers.size() == 1) {
+        if (invokers.size() == 1)
             return invokers.get(0);
-        }
         return doSelect(invokers, url, invocation);
     }
 
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java
index 15163172fc..956ff7709f 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveLoadBalance.java
@@ -16,6 +16,7 @@
  */
 package org.apache.dubbo.rpc.cluster.loadbalance;
 
+import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.rpc.Invocation;
 import org.apache.dubbo.rpc.Invoker;
@@ -26,6 +27,7 @@
 
 /**
  * LeastActiveLoadBalance
+ *
  */
 public class LeastActiveLoadBalance extends AbstractLoadBalance {
 
@@ -37,26 +39,26 @@
         int leastActive = -1; // The least active value of all invokers
         int leastCount = 0; // The number of invokers having the same least 
active value (leastActive)
         int[] leastIndexes = new int[length]; // The index of invokers having 
the same least active value (leastActive)
-        int totalWeight = 0; // The sum of with warmup weights
+        int totalWeight = 0; // The sum of weights
         int firstWeight = 0; // Initial value, used for comparision
         boolean sameWeight = true; // Every invoker has the same weight value?
         for (int i = 0; i < length; i++) {
             Invoker<T> invoker = invokers.get(i);
             int active = RpcStatus.getStatus(invoker.getUrl(), 
invocation.getMethodName()).getActive(); // Active number
-            int afterWarmup = getWeight(invoker, invocation);
+            int weight = 
invoker.getUrl().getMethodParameter(invocation.getMethodName(), 
Constants.WEIGHT_KEY, Constants.DEFAULT_WEIGHT); // Weight
             if (leastActive == -1 || active < leastActive) { // Restart, when 
find a invoker having smaller least active value.
                 leastActive = active; // Record the current least active value
                 leastCount = 1; // Reset leastCount, count again based on 
current leastCount
                 leastIndexes[0] = i; // Reset
-                totalWeight = afterWarmup; // Reset
-                firstWeight = afterWarmup; // Record the weight the first 
invoker
+                totalWeight = weight; // Reset
+                firstWeight = weight; // Record the weight the first invoker
                 sameWeight = true; // Reset, every invoker has the same weight 
value?
             } else if (active == leastActive) { // If current invoker's active 
value equals with leaseActive, then accumulating.
                 leastIndexes[leastCount++] = i; // Record index number of this 
invoker
-                totalWeight += afterWarmup; // Add this invoker's with warmup 
weight to totalWeight.
+                totalWeight += weight; // Add this invoker's weight to 
totalWeight.
                 // If every invoker has the same weight?
                 if (sameWeight && i > 0
-                        && afterWarmup != firstWeight) {
+                        && weight != firstWeight) {
                     sameWeight = false;
                 }
             }
@@ -68,14 +70,13 @@
         }
         if (!sameWeight && totalWeight > 0) {
             // If (not every invoker has the same weight & at least one 
invoker's weight>0), select randomly based on totalWeight.
-            int offsetWeight = 
ThreadLocalRandom.current().nextInt(totalWeight) + 1;
+            int offsetWeight = 
ThreadLocalRandom.current().nextInt(totalWeight);
             // Return a invoker based on the random value.
             for (int i = 0; i < leastCount; i++) {
                 int leastIndex = leastIndexes[i];
                 offsetWeight -= getWeight(invokers.get(leastIndex), 
invocation);
-                if (offsetWeight <= 0) {
+                if (offsetWeight <= 0)
                     return invokers.get(leastIndex);
-                }
             }
         }
         // If all invokers have the same weight value or totalWeight=0, return 
evenly.
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
index 35ce7e5331..0ca2a4997d 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/MockInvokersSelector.java
@@ -40,9 +40,9 @@
             return getNormalInvokers(invokers);
         } else {
             String value = 
invocation.getAttachments().get(Constants.INVOCATION_NEED_MOCK);
-            if (value == null) {
+            if (value == null)
                 return getNormalInvokers(invokers);
-            } else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {
+            else if (Boolean.TRUE.toString().equalsIgnoreCase(value)) {
                 return getMockedInvokers(invokers);
             }
         }
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
index 503ede9430..af36757028 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionRouter.java
@@ -105,36 +105,33 @@ else if ("&".equals(separator)) {
             }
             // The Value in the KV part.
             else if ("=".equals(separator)) {
-                if (pair == null) {
+                if (pair == null)
                     throw new ParseException("Illegal route rule \""
                             + rule + "\", The error char '" + separator
                             + "' at index " + matcher.start() + " before \""
                             + content + "\".", matcher.start());
-                }
 
                 values = pair.matches;
                 values.add(content);
             }
             // The Value in the KV part.
             else if ("!=".equals(separator)) {
-                if (pair == null) {
+                if (pair == null)
                     throw new ParseException("Illegal route rule \""
                             + rule + "\", The error char '" + separator
                             + "' at index " + matcher.start() + " before \""
                             + content + "\".", matcher.start());
-                }
 
                 values = pair.mismatches;
                 values.add(content);
             }
             // The Value in the KV part, if Value have more than one items.
             else if (",".equals(separator)) { // Should be seperateed by ','
-                if (values == null || values.isEmpty()) {
+                if (values == null || values.isEmpty())
                     throw new ParseException("Illegal route rule \""
                             + rule + "\", The error char '" + separator
                             + "' at index " + matcher.start() + " before \""
                             + content + "\".", matcher.start());
-                }
                 values.add(content);
             } else {
                 throw new ParseException("Illegal route rule \"" + rule
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
index 59b16ed500..51fe092a05 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvoker.java
@@ -59,9 +59,8 @@ public AbstractClusterInvoker(Directory<T> directory) {
     }
 
     public AbstractClusterInvoker(Directory<T> directory, URL url) {
-        if (directory == null) {
+        if (directory == null)
             throw new IllegalArgumentException("service directory == null");
-        }
 
         this.directory = directory;
         //sticky: invoker.isAvailable() should always be checked before using 
when availablecheck is true.
@@ -111,9 +110,8 @@ public void destroy() {
      * @throws RpcException
      */
     protected Invoker<T> select(LoadBalance loadbalance, Invocation 
invocation, List<Invoker<T>> invokers, List<Invoker<T>> selected) throws 
RpcException {
-        if (invokers == null || invokers.isEmpty()) {
+        if (invokers == null || invokers.isEmpty())
             return null;
-        }
         String methodName = invocation == null ? "" : 
invocation.getMethodName();
 
         boolean sticky = 
invokers.get(0).getUrl().getMethodParameter(methodName, 
Constants.CLUSTER_STICKY_KEY, Constants.DEFAULT_CLUSTER_STICKY);
diff --git 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
index 2e02c92acd..2b875552d7 100644
--- 
a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
+++ 
b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/ClusterUtils.java
@@ -20,12 +20,11 @@
 import org.apache.dubbo.common.URL;
 
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
-import java.util.Set;
 
 /**
  * ClusterUtils
+ *
  */
 public class ClusterUtils {
 
@@ -64,17 +63,6 @@ public static URL mergeUrl(URL remoteUrl, Map<String, 
String> localMap) {
 
             map.remove(Constants.ASYNC_KEY);
             map.remove(Constants.DEFAULT_KEY_PREFIX + Constants.ASYNC_KEY);
-
-            // remove method async entry.
-            Set<String> methodAsyncKey = new HashSet<>();
-            for (String key : map.keySet()) {
-                if (key != null && key.endsWith("." + Constants.ASYNC_KEY)) {
-                    methodAsyncKey.add(key);
-                }
-            }
-            for (String needRemove : methodAsyncKey) {
-                map.remove(needRemove);
-            }
         }
 
         if (localMap != null && localMap.size() > 0) {
diff --git 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveBalanceTest.java
 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveBalanceTest.java
index 836994fdcc..fd151bcdb2 100644
--- 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveBalanceTest.java
+++ 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LeastActiveBalanceTest.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.rpc.cluster.loadbalance;
 
 import org.apache.dubbo.rpc.Invoker;
+
 import org.junit.Assert;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -38,31 +39,4 @@ public void testLeastActiveLoadBalance_select() {
         }
     }
 
-    @Test
-    public void testSelectByWeight() {
-        int sumInvoker1 = 0;
-        int sumInvoker2 = 0;
-        int loop = 10000;
-
-        LeastActiveLoadBalance lb = new LeastActiveLoadBalance();
-        for (int i = 0; i < loop; i++) {
-            Invoker selected = lb.select(weightInvokers, null, 
weightTestInvocation);
-
-            if (selected.getUrl().getProtocol().equals("test1")) {
-                sumInvoker1++;
-            }
-
-            if (selected.getUrl().getProtocol().equals("test2")) {
-                sumInvoker2++;
-            }
-            // never select invoker3 because it's active is more than invoker1 
and invoker2
-            Assert.assertTrue("select is not the least active one", 
!selected.getUrl().getProtocol().equals("test3"));
-        }
-
-        // the sumInvoker1 : sumInvoker2 approximately equal to 1: 9
-        System.out.println(sumInvoker1);
-        System.out.println(sumInvoker2);
-
-        Assert.assertEquals("select failed!", sumInvoker1 + sumInvoker2, loop);
-    }
 }
diff --git 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
index f9db9aeca0..877631f56e 100644
--- 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
+++ 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java
@@ -21,9 +21,8 @@
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.rpc.Invocation;
 import org.apache.dubbo.rpc.Invoker;
-import org.apache.dubbo.rpc.RpcInvocation;
-import org.apache.dubbo.rpc.RpcStatus;
 import org.apache.dubbo.rpc.cluster.LoadBalance;
+
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.BeforeClass;
@@ -51,12 +50,6 @@
     Invoker<LoadBalanceBaseTest> invoker4;
     Invoker<LoadBalanceBaseTest> invoker5;
 
-    RpcStatus weightTestRpcStatus1;
-    RpcStatus weightTestRpcStatus2;
-    RpcStatus weightTestRpcStatus3;
-
-    RpcInvocation weightTestInvocation;
-
     /**
      * @throws java.lang.Exception
      */
@@ -152,55 +145,4 @@ private static int calculateDefaultWarmupWeight(int 
uptime) {
         return AbstractLoadBalance.calculateWarmupWeight(uptime, 
Constants.DEFAULT_WARMUP, Constants.DEFAULT_WEIGHT);
     }
 
-    /*------------------------------------test invokers for 
weight---------------------------------------*/
-
-    protected List<Invoker<LoadBalanceBaseTest>> weightInvokers = new 
ArrayList<Invoker<LoadBalanceBaseTest>>();
-    protected Invoker<LoadBalanceBaseTest> weightInvoker1;
-    protected Invoker<LoadBalanceBaseTest> weightInvoker2;
-    protected Invoker<LoadBalanceBaseTest> weightInvoker3;
-
-    @Before
-    public void before() throws Exception {
-        weightInvoker1 = mock(Invoker.class);
-        weightInvoker2 = mock(Invoker.class);
-        weightInvoker3 = mock(Invoker.class);
-
-        weightTestInvocation = new RpcInvocation();
-        weightTestInvocation.setMethodName("test");
-
-        URL url1 = URL.valueOf("test1://0:1/DemoService");
-        url1 = url1.addParameter(Constants.WEIGHT_KEY, 1);
-        url1 = url1.addParameter(weightTestInvocation.getMethodName() + "." + 
Constants.WEIGHT_KEY, 1);
-        url1 = url1.addParameter("active", 0);
-
-        URL url2 = URL.valueOf("test2://0:9/DemoService");
-        url2 = url2.addParameter(Constants.WEIGHT_KEY, 9);
-        url2 = url2.addParameter(weightTestInvocation.getMethodName() + "." + 
Constants.WEIGHT_KEY, 9);
-        url2 = url2.addParameter("active", 0);
-
-        URL url3 = URL.valueOf("test3://1:6/DemoService");
-        url3 = url3.addParameter(Constants.WEIGHT_KEY, 6);
-        url3 = url3.addParameter(weightTestInvocation.getMethodName() + "." + 
Constants.WEIGHT_KEY, 6);
-        url3 = url3.addParameter("active", 1);
-
-        given(weightInvoker1.isAvailable()).willReturn(true);
-        given(weightInvoker1.getUrl()).willReturn(url1);
-
-        given(weightInvoker2.isAvailable()).willReturn(true);
-        given(weightInvoker2.getUrl()).willReturn(url2);
-
-        given(weightInvoker3.isAvailable()).willReturn(true);
-        given(weightInvoker3.getUrl()).willReturn(url3);
-
-        weightInvokers.add(weightInvoker1);
-        weightInvokers.add(weightInvoker2);
-        weightInvokers.add(weightInvoker3);
-
-        weightTestRpcStatus1 = RpcStatus.getStatus(weightInvoker1.getUrl(), 
weightTestInvocation.getMethodName());
-        weightTestRpcStatus2 = RpcStatus.getStatus(weightInvoker2.getUrl(), 
weightTestInvocation.getMethodName());
-        weightTestRpcStatus3 = RpcStatus.getStatus(weightInvoker3.getUrl(), 
weightTestInvocation.getMethodName());
-
-        // weightTestRpcStatus3 active is 1
-        RpcStatus.beginCount(weightInvoker3.getUrl(), 
weightTestInvocation.getMethodName());
-    }
 }
\ No newline at end of file
diff --git 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalanceTest.java
 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalanceTest.java
index d31a85d08d..3f20291d3d 100644
--- 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalanceTest.java
+++ 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RandomLoadBalanceTest.java
@@ -18,6 +18,7 @@
 
 import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.RpcStatus;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -53,35 +54,4 @@ public void testRandomLoadBalanceSelect() {
         Assert.assertEquals(0, counter.get(invoker5).intValue());
     }
 
-    @Test
-    public void testSelectByWeight() {
-        int sumInvoker1 = 0;
-        int sumInvoker2 = 0;
-        int sumInvoker3 = 0;
-        int loop = 10000;
-
-        RandomLoadBalance lb = new RandomLoadBalance();
-        for (int i = 0; i < loop; i++) {
-            Invoker selected = lb.select(weightInvokers, null, 
weightTestInvocation);
-
-            if (selected.getUrl().getProtocol().equals("test1")) {
-                sumInvoker1++;
-            }
-
-            if (selected.getUrl().getProtocol().equals("test2")) {
-                sumInvoker2++;
-            }
-
-            if (selected.getUrl().getProtocol().equals("test3")) {
-                sumInvoker3++;
-            }
-        }
-
-        // 1 : 9 : 6
-        System.out.println(sumInvoker1);
-        System.out.println(sumInvoker2);
-        System.out.println(sumInvoker3);
-        Assert.assertEquals("select failed!", sumInvoker1 + sumInvoker2 + 
sumInvoker3, loop);
-    }
-
 }
diff --git 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalanceTest.java
 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalanceTest.java
index e10f69fea6..f3ae351874 100644
--- 
a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalanceTest.java
+++ 
b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/RoundRobinLoadBalanceTest.java
@@ -17,6 +17,7 @@
 package org.apache.dubbo.rpc.cluster.loadbalance;
 
 import org.apache.dubbo.rpc.Invoker;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -33,36 +34,4 @@ public void testRoundRobinLoadBalanceSelect() {
             Assert.assertTrue("abs diff should < 1", Math.abs(count - runs / 
(0f + invokers.size())) < 1f);
         }
     }
-
-    @Test
-    public void testSelectByWeight() {
-        int sumInvoker1 = 0;
-        int sumInvoker2 = 0;
-        int sumInvoker3 = 0;
-        int loop = 10000;
-
-        RoundRobinLoadBalance lb = new RoundRobinLoadBalance();
-        for (int i = 0; i < loop; i++) {
-            Invoker selected = lb.select(weightInvokers, null, 
weightTestInvocation);
-
-            if (selected.getUrl().getProtocol().equals("test1")) {
-                sumInvoker1++;
-            }
-
-            if (selected.getUrl().getProtocol().equals("test2")) {
-                sumInvoker2++;
-            }
-
-            if (selected.getUrl().getProtocol().equals("test3")) {
-                sumInvoker3++;
-            }
-        }
-
-        // 1 : 9 : 6
-        System.out.println(sumInvoker1);
-        System.out.println(sumInvoker2);
-        System.out.println(sumInvoker3);
-        Assert.assertEquals("select failed!", sumInvoker1 + sumInvoker2 + 
sumInvoker3, loop);
-    }
-
 }
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/bytecode/ClassGenerator.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/bytecode/ClassGenerator.java
index d9cee452a9..685ad177cb 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/bytecode/ClassGenerator.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/bytecode/ClassGenerator.java
@@ -16,9 +16,6 @@
  */
 package org.apache.dubbo.common.bytecode;
 
-import org.apache.dubbo.common.utils.ClassHelper;
-import org.apache.dubbo.common.utils.ReflectUtils;
-
 import javassist.CannotCompileException;
 import javassist.ClassPool;
 import javassist.CtClass;
@@ -29,6 +26,8 @@
 import javassist.CtNewMethod;
 import javassist.LoaderClassPath;
 import javassist.NotFoundException;
+import org.apache.dubbo.common.utils.ClassHelper;
+import org.apache.dubbo.common.utils.ReflectUtils;
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
@@ -47,18 +46,14 @@
  * ClassGenerator
  */
 public final class ClassGenerator {
-
     private static final AtomicLong CLASS_NAME_COUNTER = new AtomicLong(0);
     private static final String SIMPLE_NAME_TAG = "<init>";
     private static final Map<ClassLoader, ClassPool> POOL_MAP = new 
ConcurrentHashMap<ClassLoader, ClassPool>(); //ClassLoader - ClassPool
     private ClassPool mPool;
     private CtClass mCtc;
-    private String mClassName;
-    private String mSuperClass;
+    private String mClassName, mSuperClass;
     private Set<String> mInterfaces;
-    private List<String> mFields;
-    private List<String> mConstructors;
-    private List<String> mMethods;
+    private List<String> mFields, mConstructors, mMethods;
     private Map<String, Method> mCopyMethods; // <method desc,method instance>
     private Map<String, Constructor<?>> mCopyConstructors; // <constructor 
desc,constructor instance>
     private boolean mDefaultConstructor = false;
@@ -83,9 +78,8 @@ public static boolean isDynamicClass(Class<?> cl) {
     }
 
     public static ClassPool getClassPool(ClassLoader loader) {
-        if (loader == null) {
+        if (loader == null)
             return ClassPool.getDefault();
-        }
 
         ClassPool pool = POOL_MAP.get(loader);
         if (pool == null) {
@@ -98,22 +92,12 @@ public static ClassPool getClassPool(ClassLoader loader) {
 
     private static String modifier(int mod) {
         StringBuilder modifier = new StringBuilder();
-        if (Modifier.isPublic(mod)) {
-            modifier.append("public");
-        }
-        if (Modifier.isProtected(mod)) {
-            modifier.append("protected");
-        }
-        if (Modifier.isPrivate(mod)) {
-            modifier.append("private");
-        }
+        if (Modifier.isPublic(mod)) modifier.append("public");
+        if (Modifier.isProtected(mod)) modifier.append("protected");
+        if (Modifier.isPrivate(mod)) modifier.append("private");
 
-        if (Modifier.isStatic(mod)) {
-            modifier.append(" static");
-        }
-        if (Modifier.isVolatile(mod)) {
-            modifier.append(" volatile");
-        }
+        if (Modifier.isStatic(mod)) modifier.append(" static");
+        if (Modifier.isVolatile(mod)) modifier.append(" volatile");
 
         return modifier.toString();
     }
@@ -128,9 +112,8 @@ public ClassGenerator setClassName(String name) {
     }
 
     public ClassGenerator addInterface(String cn) {
-        if (mInterfaces == null) {
+        if (mInterfaces == null)
             mInterfaces = new HashSet<String>();
-        }
         mInterfaces.add(cn);
         return this;
     }
@@ -150,9 +133,8 @@ public ClassGenerator setSuperClass(Class<?> cl) {
     }
 
     public ClassGenerator addField(String code) {
-        if (mFields == null) {
+        if (mFields == null)
             mFields = new ArrayList<String>();
-        }
         mFields.add(code);
         return this;
     }
@@ -174,9 +156,8 @@ public ClassGenerator addField(String name, int mod, 
Class<?> type, String def)
     }
 
     public ClassGenerator addMethod(String code) {
-        if (mMethods == null) {
+        if (mMethods == null)
             mMethods = new ArrayList<String>();
-        }
         mMethods.add(code);
         return this;
     }
@@ -185,15 +166,13 @@ public ClassGenerator addMethod(String name, int mod, 
Class<?> rt, Class<?>[] pt
         return addMethod(name, mod, rt, pts, null, body);
     }
 
-    public ClassGenerator addMethod(String name, int mod, Class<?> rt, 
Class<?>[] pts, Class<?>[] ets,
-                                    String body) {
+    public ClassGenerator addMethod(String name, int mod, Class<?> rt, 
Class<?>[] pts, Class<?>[] ets, String body) {
         StringBuilder sb = new StringBuilder();
         sb.append(modifier(mod)).append(' 
').append(ReflectUtils.getName(rt)).append(' ').append(name);
         sb.append('(');
         for (int i = 0; i < pts.length; i++) {
-            if (i > 0) {
+            if (i > 0)
                 sb.append(',');
-            }
             sb.append(ReflectUtils.getName(pts[i]));
             sb.append(" arg").append(i);
         }
@@ -201,9 +180,8 @@ public ClassGenerator addMethod(String name, int mod, 
Class<?> rt, Class<?>[] pt
         if (ets != null && ets.length > 0) {
             sb.append(" throws ");
             for (int i = 0; i < ets.length; i++) {
-                if (i > 0) {
+                if (i > 0)
                     sb.append(',');
-                }
                 sb.append(ReflectUtils.getName(ets[i]));
             }
         }
@@ -219,17 +197,15 @@ public ClassGenerator addMethod(Method m) {
     public ClassGenerator addMethod(String name, Method m) {
         String desc = name + ReflectUtils.getDescWithoutMethodName(m);
         addMethod(':' + desc);
-        if (mCopyMethods == null) {
+        if (mCopyMethods == null)
             mCopyMethods = new ConcurrentHashMap<String, Method>(8);
-        }
         mCopyMethods.put(desc, m);
         return this;
     }
 
     public ClassGenerator addConstructor(String code) {
-        if (mConstructors == null) {
+        if (mConstructors == null)
             mConstructors = new LinkedList<String>();
-        }
         mConstructors.add(code);
         return this;
     }
@@ -243,9 +219,8 @@ public ClassGenerator addConstructor(int mod, Class<?>[] 
pts, Class<?>[] ets, St
         sb.append(modifier(mod)).append(' ').append(SIMPLE_NAME_TAG);
         sb.append('(');
         for (int i = 0; i < pts.length; i++) {
-            if (i > 0) {
+            if (i > 0)
                 sb.append(',');
-            }
             sb.append(ReflectUtils.getName(pts[i]));
             sb.append(" arg").append(i);
         }
@@ -253,9 +228,8 @@ public ClassGenerator addConstructor(int mod, Class<?>[] 
pts, Class<?>[] ets, St
         if (ets != null && ets.length > 0) {
             sb.append(" throws ");
             for (int i = 0; i < ets.length; i++) {
-                if (i > 0) {
+                if (i > 0)
                     sb.append(',');
-                }
                 sb.append(ReflectUtils.getName(ets[i]));
             }
         }
@@ -266,9 +240,8 @@ public ClassGenerator addConstructor(int mod, Class<?>[] 
pts, Class<?>[] ets, St
     public ClassGenerator addConstructor(Constructor<?> c) {
         String desc = ReflectUtils.getDesc(c);
         addConstructor(":" + desc);
-        if (mCopyConstructors == null) {
+        if (mCopyConstructors == null)
             mCopyConstructors = new ConcurrentHashMap<String, 
Constructor<?>>(4);
-        }
         mCopyConstructors.put(desc, c);
         return this;
     }
@@ -283,58 +256,43 @@ public ClassPool getClassPool() {
     }
 
     public Class<?> toClass() {
-        return toClass(ClassHelper.getClassLoader(ClassGenerator.class),
-                getClass().getProtectionDomain());
+        return toClass(ClassHelper.getClassLoader(ClassGenerator.class), 
getClass().getProtectionDomain());
     }
 
     public Class<?> toClass(ClassLoader loader, ProtectionDomain pd) {
-        if (mCtc != null) {
+        if (mCtc != null)
             mCtc.detach();
-        }
         long id = CLASS_NAME_COUNTER.getAndIncrement();
         try {
             CtClass ctcs = mSuperClass == null ? null : mPool.get(mSuperClass);
-            if (mClassName == null) {
+            if (mClassName == null)
                 mClassName = (mSuperClass == null || 
javassist.Modifier.isPublic(ctcs.getModifiers())
                         ? ClassGenerator.class.getName() : mSuperClass + 
"$sc") + id;
-            }
             mCtc = mPool.makeClass(mClassName);
-            if (mSuperClass != null) {
+            if (mSuperClass != null)
                 mCtc.setSuperclass(ctcs);
-            }
             mCtc.addInterface(mPool.get(DC.class.getName())); // add dynamic 
class tag.
-            if (mInterfaces != null) {
-                for (String cl : mInterfaces) {
-                    mCtc.addInterface(mPool.get(cl));
-                }
-            }
-            if (mFields != null) {
-                for (String code : mFields) {
-                    mCtc.addField(CtField.make(code, mCtc));
-                }
-            }
+            if (mInterfaces != null)
+                for (String cl : mInterfaces) mCtc.addInterface(mPool.get(cl));
+            if (mFields != null)
+                for (String code : mFields) mCtc.addField(CtField.make(code, 
mCtc));
             if (mMethods != null) {
                 for (String code : mMethods) {
-                    if (code.charAt(0) == ':') {
-                        
mCtc.addMethod(CtNewMethod.copy(getCtMethod(mCopyMethods.get(code.substring(1))),
-                                code.substring(1, code.indexOf('(')), mCtc, 
null));
-                    } else {
+                    if (code.charAt(0) == ':')
+                        
mCtc.addMethod(CtNewMethod.copy(getCtMethod(mCopyMethods.get(code.substring(1))),
 code.substring(1, code.indexOf('(')), mCtc, null));
+                    else
                         mCtc.addMethod(CtNewMethod.make(code, mCtc));
-                    }
                 }
             }
-            if (mDefaultConstructor) {
+            if (mDefaultConstructor)
                 mCtc.addConstructor(CtNewConstructor.defaultConstructor(mCtc));
-            }
             if (mConstructors != null) {
                 for (String code : mConstructors) {
                     if (code.charAt(0) == ':') {
-                        mCtc.addConstructor(CtNewConstructor
-                                
.copy(getCtConstructor(mCopyConstructors.get(code.substring(1))), mCtc, null));
+                        
mCtc.addConstructor(CtNewConstructor.copy(getCtConstructor(mCopyConstructors.get(code.substring(1))),
 mCtc, null));
                     } else {
                         String[] sn = mCtc.getSimpleName().split("\\$+"); // 
inner class name include $.
-                        mCtc.addConstructor(
-                                
CtNewConstructor.make(code.replaceFirst(SIMPLE_NAME_TAG, sn[sn.length - 1]), 
mCtc));
+                        
mCtc.addConstructor(CtNewConstructor.make(code.replaceFirst(SIMPLE_NAME_TAG, 
sn[sn.length - 1]), mCtc));
                     }
                 }
             }
@@ -349,27 +307,13 @@ public ClassPool getClassPool() {
     }
 
     public void release() {
-        if (mCtc != null) {
-            mCtc.detach();
-        }
-        if (mInterfaces != null) {
-            mInterfaces.clear();
-        }
-        if (mFields != null) {
-            mFields.clear();
-        }
-        if (mMethods != null) {
-            mMethods.clear();
-        }
-        if (mConstructors != null) {
-            mConstructors.clear();
-        }
-        if (mCopyMethods != null) {
-            mCopyMethods.clear();
-        }
-        if (mCopyConstructors != null) {
-            mCopyConstructors.clear();
-        }
+        if (mCtc != null) mCtc.detach();
+        if (mInterfaces != null) mInterfaces.clear();
+        if (mFields != null) mFields.clear();
+        if (mMethods != null) mMethods.clear();
+        if (mConstructors != null) mConstructors.clear();
+        if (mCopyMethods != null) mCopyMethods.clear();
+        if (mCopyConstructors != null) mCopyConstructors.clear();
     }
 
     private CtClass getCtClass(Class<?> c) throws NotFoundException {
@@ -377,8 +321,7 @@ private CtClass getCtClass(Class<?> c) throws 
NotFoundException {
     }
 
     private CtMethod getCtMethod(Method m) throws NotFoundException {
-        return getCtClass(m.getDeclaringClass())
-                .getMethod(m.getName(), 
ReflectUtils.getDescWithoutMethodName(m));
+        return getCtClass(m.getDeclaringClass()).getMethod(m.getName(), 
ReflectUtils.getDescWithoutMethodName(m));
     }
 
     private CtConstructor getCtConstructor(Constructor<?> c) throws 
NotFoundException {
@@ -386,6 +329,5 @@ private CtConstructor getCtConstructor(Constructor<?> c) 
throws NotFoundExceptio
     }
 
     public static interface DC {
-
     } // dynamic class tag interface.
 }
\ No newline at end of file
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
index fcbb292ec7..666abfbaba 100644
--- 
a/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
+++ 
b/dubbo-common/src/main/java/org/apache/dubbo/common/extension/ExtensionLoader.java
@@ -21,7 +21,6 @@
 import org.apache.dubbo.common.extension.support.ActivateComparator;
 import org.apache.dubbo.common.logger.Logger;
 import org.apache.dubbo.common.logger.LoggerFactory;
-import org.apache.dubbo.common.utils.ClassHelper;
 import org.apache.dubbo.common.utils.ConcurrentHashSet;
 import org.apache.dubbo.common.utils.ConfigUtils;
 import org.apache.dubbo.common.utils.Holder;
@@ -124,7 +123,7 @@ private ExtensionLoader(Class<?> type) {
     }
 
     private static ClassLoader findClassLoader() {
-        return ClassHelper.getClassLoader(ExtensionLoader.class);
+        return ExtensionLoader.class.getClassLoader();
     }
 
     public String getExtensionName(T extensionInstance) {
@@ -971,4 +970,4 @@ public String toString() {
         return this.getClass().getName() + "[" + type.getName() + "]";
     }
 
-}
+}
\ No newline at end of file
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassHelper.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassHelper.java
index d2b3434c29..e38752fcab 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassHelper.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ClassHelper.java
@@ -85,10 +85,10 @@ public static ClassLoader getCallerClassLoader(Class<?> 
caller) {
     /**
      * get class loader
      *
-     * @param clazz
+     * @param cls
      * @return class loader
      */
-    public static ClassLoader getClassLoader(Class<?> clazz) {
+    public static ClassLoader getClassLoader(Class<?> cls) {
         ClassLoader cl = null;
         try {
             cl = Thread.currentThread().getContextClassLoader();
@@ -97,18 +97,8 @@ public static ClassLoader getClassLoader(Class<?> clazz) {
         }
         if (cl == null) {
             // No thread context class loader -> use class loader of this 
class.
-            cl = clazz.getClassLoader();
-            if (cl == null) {
-                // getClassLoader() returning null indicates the bootstrap 
ClassLoader
-                try {
-                    cl = ClassLoader.getSystemClassLoader();
-                }
-                catch (Throwable ex) {
-                    // Cannot access system ClassLoader - oh well, maybe the 
caller can live with null...
-                }
-            }
+            cl = cls.getClassLoader();
         }
-
         return cl;
     }
 
diff --git 
a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ConfigUtils.java 
b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ConfigUtils.java
index 436cf8f42e..f112ec2576 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ConfigUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/ConfigUtils.java
@@ -217,8 +217,7 @@ public static Properties loadProperties(String fileName, 
boolean allowMultiFile)
      */
     public static Properties loadProperties(String fileName, boolean 
allowMultiFile, boolean optional) {
         Properties properties = new Properties();
-        // add scene judgement in windows environment Fix 2557
-        if (fileName.startsWith("/") || fileName.matches("^[A-z]:\\\\\\S+$")) {
+        if (fileName.startsWith("/")) {
             try {
                 FileInputStream input = new FileInputStream(fileName);
                 try {
@@ -329,4 +328,4 @@ public static int getServerShutdownTimeout() {
         return timeout;
     }
 
-}
+}
\ No newline at end of file
diff --git 
a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
 
b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
index 9bc4cdcfd0..f31234b1e5 100644
--- 
a/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
+++ 
b/dubbo-compatible/src/test/java/org/apache/dubbo/generic/GenericServiceTest.java
@@ -58,7 +58,7 @@ public void testGeneric2() {
         DemoService server = new DemoServiceImpl();
         ProxyFactory proxyFactory = 
ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
         Protocol protocol = 
ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
-        URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + 
DemoService.class.getName() + "?version=1.0.0&generic=true$timeout=3000");
+        URL url = URL.valueOf("dubbo://127.0.0.1:5342/" + 
DemoService.class.getName() + "?version=1.0.0&generic=true");
         Exporter<DemoService> exporter = 
protocol.export(proxyFactory.getInvoker(server, DemoService.class, url));
         Invoker<GenericService> invoker = protocol.refer(GenericService.class, 
url);
 
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
index bd6195ccb2..e6a2a1fddb 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ReferenceBean.java
@@ -38,6 +38,8 @@
 
 /**
  * ReferenceFactoryBean
+ *
+ * @export
  */
 public class ReferenceBean<T> extends ReferenceConfig<T> implements 
FactoryBean, ApplicationContextAware, InitializingBean, DisposableBean {
 
@@ -60,7 +62,7 @@ public void setApplicationContext(ApplicationContext 
applicationContext) {
     }
 
     @Override
-    public Object getObject() {
+    public Object getObject() throws Exception {
         return get();
     }
 
@@ -83,7 +85,7 @@ public void afterPropertiesSet() throws Exception {
             if (consumerConfigMap != null && consumerConfigMap.size() > 0) {
                 ConsumerConfig consumerConfig = null;
                 for (ConsumerConfig config : consumerConfigMap.values()) {
-                    if (config.isDefault() == null || config.isDefault()) {
+                    if (config.isDefault() == null || 
config.isDefault().booleanValue()) {
                         if (consumerConfig != null) {
                             throw new IllegalStateException("Duplicate 
consumer configs: " + consumerConfig + " and " + config);
                         }
@@ -101,7 +103,7 @@ public void afterPropertiesSet() throws Exception {
             if (applicationConfigMap != null && applicationConfigMap.size() > 
0) {
                 ApplicationConfig applicationConfig = null;
                 for (ApplicationConfig config : applicationConfigMap.values()) 
{
-                    if (config.isDefault() == null || config.isDefault()) {
+                    if (config.isDefault() == null || 
config.isDefault().booleanValue()) {
                         if (applicationConfig != null) {
                             throw new IllegalStateException("Duplicate 
application configs: " + applicationConfig + " and " + config);
                         }
@@ -119,7 +121,7 @@ public void afterPropertiesSet() throws Exception {
             if (moduleConfigMap != null && moduleConfigMap.size() > 0) {
                 ModuleConfig moduleConfig = null;
                 for (ModuleConfig config : moduleConfigMap.values()) {
-                    if (config.isDefault() == null || config.isDefault()) {
+                    if (config.isDefault() == null || 
config.isDefault().booleanValue()) {
                         if (moduleConfig != null) {
                             throw new IllegalStateException("Duplicate module 
configs: " + moduleConfig + " and " + config);
                         }
@@ -136,13 +138,13 @@ public void afterPropertiesSet() throws Exception {
                 && (getApplication() == null || 
getApplication().getRegistries() == null || 
getApplication().getRegistries().isEmpty())) {
             Map<String, RegistryConfig> registryConfigMap = applicationContext 
== null ? null : 
BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, 
RegistryConfig.class, false, false);
             if (registryConfigMap != null && registryConfigMap.size() > 0) {
-                List<RegistryConfig> registryConfigs = new ArrayList<>();
+                List<RegistryConfig> registryConfigs = new 
ArrayList<RegistryConfig>();
                 for (RegistryConfig config : registryConfigMap.values()) {
-                    if (config.isDefault() == null || config.isDefault()) {
+                    if (config.isDefault() == null || 
config.isDefault().booleanValue()) {
                         registryConfigs.add(config);
                     }
                 }
-                if (!registryConfigs.isEmpty()) {
+                if (registryConfigs != null && !registryConfigs.isEmpty()) {
                     super.setRegistries(registryConfigs);
                 }
             }
@@ -154,7 +156,7 @@ public void afterPropertiesSet() throws Exception {
             if (monitorConfigMap != null && monitorConfigMap.size() > 0) {
                 MonitorConfig monitorConfig = null;
                 for (MonitorConfig config : monitorConfigMap.values()) {
-                    if (config.isDefault() == null || config.isDefault()) {
+                    if (config.isDefault() == null || 
config.isDefault().booleanValue()) {
                         if (monitorConfig != null) {
                             throw new IllegalStateException("Duplicate monitor 
configs: " + monitorConfig + " and " + config);
                         }
@@ -170,7 +172,7 @@ public void afterPropertiesSet() throws Exception {
         if (b == null && getConsumer() != null) {
             b = getConsumer().isInit();
         }
-        if (b != null && b) {
+        if (b != null && b.booleanValue()) {
             getObject();
         }
     }
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
index 1d5ff8e8d3..acdb9cd44e 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/ServiceBean.java
@@ -50,6 +50,8 @@
 
     private static final long serialVersionUID = 213195494150089726L;
 
+    private static transient ApplicationContext SPRING_CONTEXT;
+
     private final transient Service service;
 
     private transient ApplicationContext applicationContext;
@@ -68,10 +70,15 @@ public ServiceBean(Service service) {
         this.service = service;
     }
 
+    public static ApplicationContext getSpringContext() {
+        return SPRING_CONTEXT;
+    }
+
     @Override
     public void setApplicationContext(ApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
         SpringExtensionFactory.addApplicationContext(applicationContext);
+        SPRING_CONTEXT = applicationContext;
         try {
             Method method = 
applicationContext.getClass().getMethod("addApplicationListener", 
ApplicationListener.class); // backward compatibility to spring 2.0.1
             method.invoke(applicationContext, this);
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
index 56862f33b4..11dd6a650d 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/extension/SpringExtensionFactory.java
@@ -42,10 +42,6 @@ public static void 
removeApplicationContext(ApplicationContext context) {
         contexts.remove(context);
     }
 
-    public static Set<ApplicationContext> getContexts() {
-        return contexts;
-    }
-
     // currently for test purpose
     public static void clearContexts() {
         contexts.clear();
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
index 5a934bed1f..4766b6bde7 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/DataSourceStatusChecker.java
@@ -21,7 +21,7 @@
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.common.status.StatusChecker;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.ServiceBean;
 import org.springframework.context.ApplicationContext;
 
 import javax.sql.DataSource;
@@ -41,18 +41,10 @@
     @Override
     @SuppressWarnings("unchecked")
     public Status check() {
-        ApplicationContext context = null;
-        for (ApplicationContext c : SpringExtensionFactory.getContexts()) {
-            if (c != null) {
-                context = c;
-                break;
-            }
-        }
-
+        ApplicationContext context = ServiceBean.getSpringContext();
         if (context == null) {
             return new Status(Status.Level.UNKNOWN);
         }
-
         Map<String, DataSource> dataSources = 
context.getBeansOfType(DataSource.class, false, false);
         if (dataSources == null || dataSources.size() == 0) {
             return new Status(Status.Level.UNKNOWN);
diff --git 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
index 8f4fb6525b..3f7c7a7089 100644
--- 
a/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
+++ 
b/dubbo-config/dubbo-config-spring/src/main/java/org/apache/dubbo/config/spring/status/SpringStatusChecker.java
@@ -21,7 +21,7 @@
 import org.apache.dubbo.common.logger.LoggerFactory;
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.common.status.StatusChecker;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
+import org.apache.dubbo.config.spring.ServiceBean;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.Lifecycle;
 
@@ -37,18 +37,10 @@
 
     @Override
     public Status check() {
-        ApplicationContext context = null;
-        for (ApplicationContext c : SpringExtensionFactory.getContexts()) {
-            if (c != null) {
-                context = c;
-                break;
-            }
-        }
-
+        ApplicationContext context = ServiceBean.getSpringContext();
         if (context == null) {
             return new Status(Status.Level.UNKNOWN);
         }
-
         Status.Level level = Status.Level.OK;
         if (context instanceof Lifecycle) {
             if (((Lifecycle) context).isRunning()) {
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/initializer/DubboApplicationContextInitializerTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/initializer/DubboApplicationContextInitializerTest.java
index b5b8f8c9a9..2c84095f4e 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/initializer/DubboApplicationContextInitializerTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/initializer/DubboApplicationContextInitializerTest.java
@@ -29,7 +29,7 @@
     @Test
     public void testSpringContextLoaderListenerInWebXml() throws Exception {
         Tomcat tomcat = new Tomcat();
-        tomcat.setBaseDir("target/test-classes");
+        tomcat.setBaseDir("src/test/resources");
         tomcat.setPort(12345);
         StandardContext context = new StandardContext();
         context.setName("test");
@@ -49,7 +49,7 @@ public void testSpringContextLoaderListenerInWebXml() throws 
Exception {
     @Test
     public void testNoListenerInWebXml() throws Exception {
         Tomcat tomcat = new Tomcat();
-        tomcat.setBaseDir("target/test-classes");
+        tomcat.setBaseDir("src/test/resources");
         tomcat.setPort(12345);
         StandardContext context = new StandardContext();
         context.setName("test2");
@@ -69,7 +69,7 @@ public void testNoListenerInWebXml() throws Exception {
     @Test
     public void testMetadataComplete() throws Exception {
         Tomcat tomcat = new Tomcat();
-        tomcat.setBaseDir("target/test-classes");
+        tomcat.setBaseDir("src/test/resources");
         tomcat.setPort(12345);
         StandardContext context = new StandardContext();
         context.setName("test3");
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
index 532d97b547..ee098cd7a2 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/DataSourceStatusCheckerTest.java
@@ -18,13 +18,10 @@
 
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Answers;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.springframework.context.ApplicationContext;
 
 import javax.sql.DataSource;
@@ -54,12 +51,6 @@ public void setUp() throws Exception {
         new ServiceBean<Object>().setApplicationContext(applicationContext);
     }
 
-    @After
-    public void tearDown() throws Exception {
-        SpringExtensionFactory.clearContexts();
-        Mockito.reset(applicationContext);
-    }
-
     @Test
     public void testWithoutApplicationContext() {
         Status status = dataSourceStatusChecker.check();
@@ -106,4 +97,4 @@ public void testWithDatasourceNotHasNextResult() throws 
SQLException {
 
         assertThat(status.getLevel(), is(Status.Level.ERROR));
     }
-}
+}
\ No newline at end of file
diff --git 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
index 66155e1713..af151ca531 100644
--- 
a/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
+++ 
b/dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/status/SpringStatusCheckerTest.java
@@ -18,12 +18,9 @@
 
 import org.apache.dubbo.common.status.Status;
 import org.apache.dubbo.config.spring.ServiceBean;
-import org.apache.dubbo.config.spring.extension.SpringExtensionFactory;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.Lifecycle;
 
@@ -46,12 +43,6 @@ public void setUp() throws Exception {
         new ServiceBean<Object>().setApplicationContext(applicationContext);
     }
 
-    @After
-    public void tearDown() throws Exception {
-        SpringExtensionFactory.clearContexts();
-        Mockito.reset(applicationContext);
-    }
-
     @Test
     public void testWithoutApplicationContext() {
         Status status = springStatusChecker.check();
@@ -61,7 +52,6 @@ public void testWithoutApplicationContext() {
 
     @Test
     public void testWithLifeCycleRunning() {
-        SpringExtensionFactory.clearContexts();
         ApplicationLifeCycle applicationLifeCycle = 
mock(ApplicationLifeCycle.class);
         new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
         given(applicationLifeCycle.getConfigLocations()).willReturn(new 
String[]{"test1", "test2"});
@@ -75,7 +65,6 @@ public void testWithLifeCycleRunning() {
 
     @Test
     public void testWithoutLifeCycleRunning() {
-        SpringExtensionFactory.clearContexts();
         ApplicationLifeCycle applicationLifeCycle = 
mock(ApplicationLifeCycle.class);
         new ServiceBean<Object>().setApplicationContext(applicationLifeCycle);
         given(applicationLifeCycle.isRunning()).willReturn(false);
@@ -88,4 +77,4 @@ public void testWithoutLifeCycleRunning() {
     interface ApplicationLifeCycle extends Lifecycle, ApplicationContext {
         String[] getConfigLocations();
     }
-}
+}
\ No newline at end of file
diff --git 
a/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/filter/CacheFilter.java
 
b/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/filter/CacheFilter.java
index 62a739d186..f7e362ba58 100644
--- 
a/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/filter/CacheFilter.java
+++ 
b/dubbo-filter/dubbo-filter-cache/src/main/java/org/apache/dubbo/cache/filter/CacheFilter.java
@@ -16,8 +16,6 @@
  */
 package org.apache.dubbo.cache.filter;
 
-import java.io.Serializable;
-
 import org.apache.dubbo.cache.Cache;
 import org.apache.dubbo.cache.CacheFactory;
 import org.apache.dubbo.common.Constants;
@@ -51,34 +49,16 @@ public Result invoke(Invoker<?> invoker, Invocation 
invocation) throws RpcExcept
                 String key = 
StringUtils.toArgumentString(invocation.getArguments());
                 Object value = cache.get(key);
                 if (value != null) {
-                    if (value instanceof ValueWrapper) {
-                        return new RpcResult(((ValueWrapper)value).get());
-                    } else {
-                        return new RpcResult(value);
-                    }
+                    return new RpcResult(value);
                 }
                 Result result = invoker.invoke(invocation);
-                if (!result.hasException()) {
-                    cache.put(key, new ValueWrapper(result.getValue()));
+                if (!result.hasException() && result.getValue() != null) {
+                    cache.put(key, result.getValue());
                 }
                 return result;
             }
         }
         return invoker.invoke(invocation);
     }
-    
-    static class ValueWrapper implements Serializable{
-
-        private static final long serialVersionUID = -1777337318019193256L;
 
-        private final Object value;
-
-        public ValueWrapper(Object value){
-            this.value = value;
-        }
-
-        public Object get() {
-            return this.value;
-        }
-    }
 }
diff --git 
a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/filter/CacheFilterTest.java
 
b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/filter/CacheFilterTest.java
index 7d571dd644..c51bce79b9 100644
--- 
a/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/filter/CacheFilterTest.java
+++ 
b/dubbo-filter/dubbo-filter-cache/src/test/java/org/apache/dubbo/cache/filter/CacheFilterTest.java
@@ -134,7 +134,7 @@ public void testNull() {
         cacheFilter.invoke(invoker4, invocation);
         RpcResult rpcResult1 = (RpcResult) cacheFilter.invoke(invoker1, 
invocation);
         RpcResult rpcResult2 = (RpcResult) cacheFilter.invoke(invoker2, 
invocation);
-        Assert.assertEquals(rpcResult1.getValue(), null);
-        Assert.assertEquals(rpcResult2.getValue(), null);
+        Assert.assertEquals(rpcResult1.getValue(), "value1");
+        Assert.assertEquals(rpcResult2.getValue(), "value1");
     }
 }
diff --git 
a/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java
 
b/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java
index a7c8afe3f2..328c54c749 100644
--- 
a/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java
+++ 
b/dubbo-filter/dubbo-filter-validation/src/main/java/org/apache/dubbo/validation/support/jvalidation/JValidator.java
@@ -202,29 +202,28 @@ private static String toUpperMethoName(String methodName) 
{
     // Copy from 
javassist.bytecode.annotation.Annotation.createMemberValue(ConstPool, CtClass);
     private static MemberValue createMemberValue(ConstPool cp, CtClass type, 
Object value) throws NotFoundException {
         MemberValue memberValue = 
javassist.bytecode.annotation.Annotation.createMemberValue(cp, type);
-        if (memberValue instanceof BooleanMemberValue) {
+        if (memberValue instanceof BooleanMemberValue)
             ((BooleanMemberValue) memberValue).setValue((Boolean) value);
-        } else if (memberValue instanceof ByteMemberValue) {
+        else if (memberValue instanceof ByteMemberValue)
             ((ByteMemberValue) memberValue).setValue((Byte) value);
-        } else if (memberValue instanceof CharMemberValue) {
+        else if (memberValue instanceof CharMemberValue)
             ((CharMemberValue) memberValue).setValue((Character) value);
-        } else if (memberValue instanceof ShortMemberValue) {
+        else if (memberValue instanceof ShortMemberValue)
             ((ShortMemberValue) memberValue).setValue((Short) value);
-        } else if (memberValue instanceof IntegerMemberValue) {
+        else if (memberValue instanceof IntegerMemberValue)
             ((IntegerMemberValue) memberValue).setValue((Integer) value);
-        } else if (memberValue instanceof LongMemberValue) {
+        else if (memberValue instanceof LongMemberValue)
             ((LongMemberValue) memberValue).setValue((Long) value);
-        } else if (memberValue instanceof FloatMemberValue) {
+        else if (memberValue instanceof FloatMemberValue)
             ((FloatMemberValue) memberValue).setValue((Float) value);
-        } else if (memberValue instanceof DoubleMemberValue) {
+        else if (memberValue instanceof DoubleMemberValue)
             ((DoubleMemberValue) memberValue).setValue((Double) value);
-        } else if (memberValue instanceof ClassMemberValue) {
+        else if (memberValue instanceof ClassMemberValue)
             ((ClassMemberValue) memberValue).setValue(((Class<?>) 
value).getName());
-        } else if (memberValue instanceof StringMemberValue) {
+        else if (memberValue instanceof StringMemberValue)
             ((StringMemberValue) memberValue).setValue((String) value);
-        } else if (memberValue instanceof EnumMemberValue) {
+        else if (memberValue instanceof EnumMemberValue)
             ((EnumMemberValue) memberValue).setValue(((Enum<?>) value).name());
-        }
         /* else if (memberValue instanceof AnnotationMemberValue) */
         else if (memberValue instanceof ArrayMemberValue) {
             CtClass arrayType = type.getComponentType();
diff --git 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricName.java
 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricName.java
index ca7edb9292..93ae922696 100644
--- 
a/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricName.java
+++ 
b/dubbo-metrics/dubbo-metrics-api/src/main/java/org/apache/dubbo/metrics/MetricName.java
@@ -204,9 +204,8 @@ public static MetricName join(MetricName... parts) {
                 nameBuilder.append(name);
             }
 
-            if (!part.getTags().isEmpty()) {
+            if (!part.getTags().isEmpty())
                 tags.putAll(part.getTags());
-            }
         }
 
         MetricLevel level = firstName == null ? null : 
firstName.getMetricLevel();
@@ -220,13 +219,11 @@ public static MetricName join(MetricName... parts) {
      * @return A newly created metric name with the specified path.
      **/
     public static MetricName build(String... parts) {
-        if (parts == null || parts.length == 0) {
+        if (parts == null || parts.length == 0)
             return MetricName.EMPTY;
-        }
 
-        if (parts.length == 1) {
+        if (parts.length == 1)
             return new MetricName(parts[0], EMPTY_TAGS);
-        }
 
         return new MetricName(buildName(parts), EMPTY_TAGS);
     }
@@ -236,9 +233,8 @@ private static String buildName(String... names) {
         boolean first = true;
 
         for (String name : names) {
-            if (name == null || name.isEmpty()) {
+            if (name == null || name.isEmpty())
                 continue;
-            }
 
             if (first) {
                 first = false;
@@ -280,78 +276,64 @@ public int hashCode() {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj) {
+        if (this == obj)
             return true;
-        }
 
-        if (obj == null) {
+        if (obj == null)
             return false;
-        }
 
-        if (getClass() != obj.getClass()) {
+        if (getClass() != obj.getClass())
             return false;
-        }
 
         MetricName other = (MetricName) obj;
 
         if (key == null) {
-            if (other.key != null) {
+            if (other.key != null)
                 return false;
-            }
-        } else if (!key.equals(other.key)) {
+        } else if (!key.equals(other.key))
             return false;
-        }
 
-        if (!tags.equals(other.tags)) {
+        if (!tags.equals(other.tags))
             return false;
-        }
 
         return true;
     }
 
     @Override
     public int compareTo(MetricName o) {
-        if (o == null) {
+        if (o == null)
             return -1;
-        }
 
         int c = compareName(key, o.getKey());
 
-        if (c != 0) {
+        if (c != 0)
             return c;
-        }
 
         return compareTags(tags, o.getTags());
     }
 
     private int compareName(String left, String right) {
-        if (left == null && right == null) {
+        if (left == null && right == null)
             return 0;
-        }
 
-        if (left == null) {
+        if (left == null)
             return 1;
-        }
 
-        if (right == null) {
+        if (right == null)
             return -1;
-        }
 
         return left.compareTo(right);
     }
 
     private int compareTags(Map<String, String> left, Map<String, String> 
right) {
-        if (left == null && right == null) {
+        if (left == null && right == null)
             return 0;
-        }
 
-        if (left == null) {
+        if (left == null)
             return 1;
-        }
 
-        if (right == null) {
+        if (right == null)
             return -1;
-        }
 
         final Iterable<String> keys = uniqueSortedKeys(left, right);
 
@@ -359,23 +341,19 @@ private int compareTags(Map<String, String> left, 
Map<String, String> right) {
             final String a = left.get(key);
             final String b = right.get(key);
 
-            if (a == null && b == null) {
+            if (a == null && b == null)
                 continue;
-            }
 
-            if (a == null) {
+            if (a == null)
                 return -1;
-            }
 
-            if (b == null) {
+            if (b == null)
                 return 1;
-            }
 
             int c = a.compareTo(b);
 
-            if (c != 0) {
+            if (c != 0)
                 return c;
-            }
         }
 
         return 0;
diff --git 
a/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/Statistics.java
 
b/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/Statistics.java
index bba7ac2bb1..cf9138ec7f 100644
--- 
a/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/Statistics.java
+++ 
b/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/Statistics.java
@@ -140,65 +140,48 @@ public int hashCode() {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj) {
+        if (this == obj)
             return true;
-        }
-        if (obj == null) {
+        if (obj == null)
             return false;
-        }
-        if (getClass() != obj.getClass()) {
+        if (getClass() != obj.getClass())
             return false;
-        }
         Statistics other = (Statistics) obj;
         if (application == null) {
-            if (other.application != null) {
+            if (other.application != null)
                 return false;
-            }
-        } else if (!application.equals(other.application)) {
+        } else if (!application.equals(other.application))
             return false;
-        }
         if (client == null) {
-            if (other.client != null) {
+            if (other.client != null)
                 return false;
-            }
-        } else if (!client.equals(other.client)) {
+        } else if (!client.equals(other.client))
             return false;
-        }
         if (group == null) {
-            if (other.group != null) {
+            if (other.group != null)
                 return false;
-            }
-        } else if (!group.equals(other.group)) {
+        } else if (!group.equals(other.group))
             return false;
-        }
         if (method == null) {
-            if (other.method != null) {
+            if (other.method != null)
                 return false;
-            }
-        } else if (!method.equals(other.method)) {
+        } else if (!method.equals(other.method))
             return false;
-        }
         if (server == null) {
-            if (other.server != null) {
+            if (other.server != null)
                 return false;
-            }
-        } else if (!server.equals(other.server)) {
+        } else if (!server.equals(other.server))
             return false;
-        }
         if (service == null) {
-            if (other.service != null) {
+            if (other.service != null)
                 return false;
-            }
-        } else if (!service.equals(other.service)) {
+        } else if (!service.equals(other.service))
             return false;
-        }
         if (version == null) {
-            if (other.version != null) {
+            if (other.version != null)
                 return false;
-            }
-        } else if (!version.equals(other.version)) {
+        } else if (!version.equals(other.version))
             return false;
-        }
         return true;
     }
 
diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java
 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java
index 3a79cac5e2..6b366b2921 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryDirectory.java
@@ -96,12 +96,10 @@
 
     public RegistryDirectory(Class<T> serviceType, URL url) {
         super(url);
-        if (serviceType == null) {
+        if (serviceType == null)
             throw new IllegalArgumentException("service type is null.");
-        }
-        if (url.getServiceKey() == null || url.getServiceKey().length() == 0) {
+        if (url.getServiceKey() == null || url.getServiceKey().length() == 0)
             throw new IllegalArgumentException("registry serviceKey is null.");
-        }
         this.serviceType = serviceType;
         this.serviceKey = url.getServiceKey();
         this.queryMap = 
StringUtils.parseQueryString(url.getParameterAndDecoded(Constants.REFER_KEY));
@@ -320,9 +318,8 @@ private void refreshInvoker(List<URL> invokerUrls) {
                 }
                 try {
                     Router router = routerFactory.getRouter(url);
-                    if (!routers.contains(router)) {
+                    if (!routers.contains(router))
                         routers.add(router);
-                    }
                 } catch (Throwable t) {
                     logger.error("convert router url to router error, url: " + 
url, t);
                 }
diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
index 61360f0774..406b8a81a3 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistry.java
@@ -349,9 +349,7 @@ protected void recover() throws Exception {
     }
 
     protected void notify(List<URL> urls) {
-        if (urls == null || urls.isEmpty()) {
-            return;
-        }
+        if (urls == null || urls.isEmpty()) return;
 
         for (Map.Entry<URL, Set<NotifyListener>> entry : 
getSubscribed().entrySet()) {
             URL url = entry.getKey();
diff --git 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
index 8347d9a687..4c83ea315f 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/support/AbstractRegistryFactory.java
@@ -85,7 +85,7 @@ public Registry getRegistry(URL url) {
         url = url.setPath(RegistryService.class.getName())
                 .addParameter(Constants.INTERFACE_KEY, 
RegistryService.class.getName())
                 .removeParameters(Constants.EXPORT_KEY, Constants.REFER_KEY);
-        String key = url.toServiceStringWithoutResolving();
+        String key = url.toServiceString();
         // Lock the registry access process to ensure a single instance of the 
registry
         LOCK.lock();
         try {
diff --git 
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryFactoryTest.java
 
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryFactoryTest.java
index d0dd1cd068..616a4076c4 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryFactoryTest.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryFactoryTest.java
@@ -25,7 +25,6 @@
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.util.Collection;
 import java.util.List;
 
 /**
@@ -86,10 +85,7 @@ public void testRegistryFactoryCache() throws Exception {
         Assert.assertEquals(registry1, registry2);
     }
 
-    /**
-     * Registration center address `dubbo` does not resolve
-     */
-    // @Test
+    @Test
     public void testRegistryFactoryIpCache() throws Exception {
         Registry registry1 = 
registryFactory.getRegistry(URL.valueOf("dubbo://" + 
NetUtils.getLocalAddress().getHostName() + ":2233"));
         Registry registry2 = 
registryFactory.getRegistry(URL.valueOf("dubbo://" + 
NetUtils.getLocalAddress().getHostAddress() + ":2233"));
@@ -103,15 +99,4 @@ public void testRegistryFactoryGroupCache() throws 
Exception {
         Assert.assertNotSame(registry1, registry2);
     }
 
-    @Test
-    public void testDestroyAllRegistries() {
-        Registry registry1 = 
registryFactory.getRegistry(URL.valueOf("dubbo://" + NetUtils.getLocalHost() + 
":8888?group=xxx"));
-        Registry registry2 = 
registryFactory.getRegistry(URL.valueOf("dubbo://" + NetUtils.getLocalHost() + 
":9999?group=yyy"));
-        Collection<Registry> registries = 
AbstractRegistryFactory.getRegistries();
-        Assert.assertTrue(registries.contains(registry1));
-        Assert.assertTrue(registries.contains(registry2));
-        AbstractRegistryFactory.destroyAll();
-        Assert.assertFalse(registries.contains(registry1));
-        Assert.assertFalse(registries.contains(registry2));
-    }
 }
diff --git 
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java
 
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java
index a6b688fad9..16ffd8579d 100644
--- 
a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java
+++ 
b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/support/AbstractRegistryTest.java
@@ -30,7 +30,6 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 
@@ -49,8 +48,6 @@
     @Before
     public void init() {
         URL url = URL.valueOf("dubbo://192.168.0.2:2233");
-        //sync update cache file
-        url = url.addParameter("save.file",true);
         testUrl = 
URL.valueOf("http://192.168.0.3:9090/registry?check=false&file=N/A&interface=com.test";);
         mockUrl = new URL("dubbo", "192.168.0.1", 2200);
 
@@ -518,19 +515,4 @@ public void allTest() throws Exception {
         list.add(url3);
         return list;
     }
-
-    @Test
-    public void getCacheUrlsTest(){
-        List<URL> urls = new ArrayList<>();
-        urls.add(testUrl);
-        // check if notify successfully
-        Assert.assertFalse(notifySuccess);
-        abstractRegistry.notify(testUrl, listener, urls);
-        Assert.assertTrue(notifySuccess);
-        List<URL> cacheUrl = abstractRegistry.getCacheUrls(testUrl);
-        Assert.assertTrue(cacheUrl.size() == 1);
-        URL nullUrl = 
URL.valueOf("http://1.2.3.4:9090/registry?check=false&file=N/A&interface=com.testa";);
-        cacheUrl = abstractRegistry.getCacheUrls(nullUrl);
-        Assert.assertTrue(Objects.isNull(cacheUrl));
-    }
 }
diff --git 
a/dubbo-registry/dubbo-registry-default/src/main/java/org/apache/dubbo/registry/dubbo/DubboRegistry.java
 
b/dubbo-registry/dubbo-registry-default/src/main/java/org/apache/dubbo/registry/dubbo/DubboRegistry.java
index 45c94a73e4..60b4636d5b 100644
--- 
a/dubbo-registry/dubbo-registry-default/src/main/java/org/apache/dubbo/registry/dubbo/DubboRegistry.java
+++ 
b/dubbo-registry/dubbo-registry-default/src/main/java/org/apache/dubbo/registry/dubbo/DubboRegistry.java
@@ -116,9 +116,8 @@ protected final void connect() {
 
     @Override
     public boolean isAvailable() {
-        if (registryInvoker == null) {
+        if (registryInvoker == null)
             return false;
-        }
         return registryInvoker.isAvailable();
     }
 
diff --git 
a/dubbo-registry/dubbo-registry-redis/src/main/java/org/apache/dubbo/registry/redis/RedisRegistry.java
 
b/dubbo-registry/dubbo-registry-redis/src/main/java/org/apache/dubbo/registry/redis/RedisRegistry.java
index d37276345d..b2be164787 100644
--- 
a/dubbo-registry/dubbo-registry-redis/src/main/java/org/apache/dubbo/registry/redis/RedisRegistry.java
+++ 
b/dubbo-registry/dubbo-registry-redis/src/main/java/org/apache/dubbo/registry/redis/RedisRegistry.java
@@ -90,30 +90,22 @@ public RedisRegistry(URL url) {
         config.setTestOnBorrow(url.getParameter("test.on.borrow", true));
         config.setTestOnReturn(url.getParameter("test.on.return", false));
         config.setTestWhileIdle(url.getParameter("test.while.idle", false));
-        if (url.getParameter("max.idle", 0) > 0) {
+        if (url.getParameter("max.idle", 0) > 0)
             config.setMaxIdle(url.getParameter("max.idle", 0));
-        }
-        if (url.getParameter("min.idle", 0) > 0) {
+        if (url.getParameter("min.idle", 0) > 0)
             config.setMinIdle(url.getParameter("min.idle", 0));
-        }
-        if (url.getParameter("max.active", 0) > 0) {
+        if (url.getParameter("max.active", 0) > 0)
             config.setMaxTotal(url.getParameter("max.active", 0));
-        }
-        if (url.getParameter("max.total", 0) > 0) {
+        if (url.getParameter("max.total", 0) > 0)
             config.setMaxTotal(url.getParameter("max.total", 0));
-        }
-        if (url.getParameter("max.wait", url.getParameter("timeout", 0)) > 0) {
+        if (url.getParameter("max.wait", url.getParameter("timeout", 0)) > 0)
             config.setMaxWaitMillis(url.getParameter("max.wait", 
url.getParameter("timeout", 0)));
-        }
-        if (url.getParameter("num.tests.per.eviction.run", 0) > 0) {
+        if (url.getParameter("num.tests.per.eviction.run", 0) > 0)
             
config.setNumTestsPerEvictionRun(url.getParameter("num.tests.per.eviction.run", 
0));
-        }
-        if (url.getParameter("time.between.eviction.runs.millis", 0) > 0) {
+        if (url.getParameter("time.between.eviction.runs.millis", 0) > 0)
             
config.setTimeBetweenEvictionRunsMillis(url.getParameter("time.between.eviction.runs.millis",
 0));
-        }
-        if (url.getParameter("min.evictable.idle.time.millis", 0) > 0) {
+        if (url.getParameter("min.evictable.idle.time.millis", 0) > 0)
             
config.setMinEvictableIdleTimeMillis(url.getParameter("min.evictable.idle.time.millis",
 0));
-        }
 
         String cluster = url.getParameter("cluster", "failover");
         if (!"failover".equals(cluster) && !"replicate".equals(cluster)) {
diff --git 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/Request.java
 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/Request.java
index abd058294b..e1f45fd56a 100644
--- 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/Request.java
+++ 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/Request.java
@@ -57,9 +57,7 @@ private static long newId() {
     }
 
     private static String safeToString(Object data) {
-        if (data == null) {
-            return null;
-        }
+        if (data == null) return null;
         String dataStr;
         try {
             dataStr = data.toString();
diff --git 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeChannel.java
 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeChannel.java
index 4aef993a2e..73503cd4c2 100644
--- 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeChannel.java
+++ 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeChannel.java
@@ -221,23 +221,13 @@ public int hashCode() {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (getClass() != obj.getClass()) return false;
         HeaderExchangeChannel other = (HeaderExchangeChannel) obj;
         if (channel == null) {
-            if (other.channel != null) {
-                return false;
-            }
-        } else if (!channel.equals(other.channel)) {
-            return false;
-        }
+            if (other.channel != null) return false;
+        } else if (!channel.equals(other.channel)) return false;
         return true;
     }
 
diff --git 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
index 8eceb182e4..0b4aba067b 100644
--- 
a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
+++ 
b/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/exchange/support/header/HeaderExchangeServer.java
@@ -139,9 +139,8 @@ private void sendChannelReadOnlyEvent() {
         Collection<Channel> channels = getChannels();
         for (Channel channel : channels) {
             try {
-                if (channel.isConnected()) {
+                if (channel.isConnected())
                     channel.send(request, 
getUrl().getParameter(Constants.CHANNEL_READONLYEVENT_SENT_KEY, true));
-                }
             } catch (RemotingException e) {
                 logger.warn("send cannot write message error.", e);
             }
diff --git 
a/dubbo-remoting/dubbo-remoting-grizzly/src/main/java/org/apache/dubbo/remoting/transport/grizzly/GrizzlyClient.java
 
b/dubbo-remoting/dubbo-remoting-grizzly/src/main/java/org/apache/dubbo/remoting/transport/grizzly/GrizzlyClient.java
index 30f47b8d72..a929af3b44 100644
--- 
a/dubbo-remoting/dubbo-remoting-grizzly/src/main/java/org/apache/dubbo/remoting/transport/grizzly/GrizzlyClient.java
+++ 
b/dubbo-remoting/dubbo-remoting-grizzly/src/main/java/org/apache/dubbo/remoting/transport/grizzly/GrizzlyClient.java
@@ -101,9 +101,8 @@ protected void doClose() throws Throwable {
     @Override
     protected Channel getChannel() {
         Connection<?> c = connection;
-        if (c == null || !c.isOpen()) {
+        if (c == null || !c.isOpen())
             return null;
-        }
         return GrizzlyChannel.getOrAddChannel(c, getUrl(), this);
     }
 
diff --git 
a/dubbo-remoting/dubbo-remoting-mina/src/main/java/org/apache/dubbo/remoting/transport/mina/MinaClient.java
 
b/dubbo-remoting/dubbo-remoting-mina/src/main/java/org/apache/dubbo/remoting/transport/mina/MinaClient.java
index 552becd325..b2e4a6caa7 100644
--- 
a/dubbo-remoting/dubbo-remoting-mina/src/main/java/org/apache/dubbo/remoting/transport/mina/MinaClient.java
+++ 
b/dubbo-remoting/dubbo-remoting-mina/src/main/java/org/apache/dubbo/remoting/transport/mina/MinaClient.java
@@ -165,9 +165,8 @@ protected void doClose() throws Throwable {
     @Override
     protected Channel getChannel() {
         IoSession s = session;
-        if (s == null || !s.isConnected()) {
+        if (s == null || !s.isConnected())
             return null;
-        }
         return MinaChannel.getOrAddChannel(s, getUrl(), this);
     }
 
diff --git 
a/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/MinaClientToServerTest.java
 
b/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/MinaClientToServerTest.java
index 433a4a8250..d83236705d 100644
--- 
a/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/MinaClientToServerTest.java
+++ 
b/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/MinaClientToServerTest.java
@@ -35,7 +35,7 @@ protected ExchangeServer newServer(int port, Replier<?> 
receiver) throws Remotin
 
     @Override
     protected ExchangeChannel newClient(int port) throws RemotingException {
-        return Exchangers.connect(URL.valueOf("exchange://localhost:" + port + 
"?client=mina&timeout=3000"));
+        return Exchangers.connect(URL.valueOf("exchange://localhost:" + port + 
"?client=mina"));
     }
 
 }
\ No newline at end of file
diff --git 
a/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyChannel.java
 
b/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyChannel.java
index db69a29f24..39de3d9c61 100644
--- 
a/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyChannel.java
+++ 
b/dubbo-remoting/dubbo-remoting-netty4/src/main/java/org/apache/dubbo/remoting/transport/netty4/NettyChannel.java
@@ -178,23 +178,13 @@ public int hashCode() {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (getClass() != obj.getClass()) return false;
         NettyChannel other = (NettyChannel) obj;
         if (channel == null) {
-            if (other.channel != null) {
-                return false;
-            }
-        } else if (!channel.equals(other.channel)) {
-            return false;
-        }
+            if (other.channel != null) return false;
+        } else if (!channel.equals(other.channel)) return false;
         return true;
     }
 
diff --git 
a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/NettyClientToServerTest.java
 
b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/NettyClientToServerTest.java
index af20985e05..2d1065df4c 100644
--- 
a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/NettyClientToServerTest.java
+++ 
b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/NettyClientToServerTest.java
@@ -33,7 +33,7 @@ protected ExchangeServer newServer(int port, Replier<?> 
receiver) throws Remotin
     }
 
     protected ExchangeChannel newClient(int port) throws RemotingException {
-        return Exchangers.connect(URL.valueOf("exchange://localhost:" + port + 
"?client=netty4&timeout=3000"));
+        return Exchangers.connect(URL.valueOf("exchange://localhost:" + port + 
"?client=netty4"));
     }
 
 }
\ No newline at end of file
diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
index e9ed9156c0..0ae9867dd0 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AsyncRpcResult.java
@@ -79,9 +79,8 @@ public AsyncRpcResult(CompletableFuture<Object> future, final 
CompletableFuture<
             });
         }
         this.valueFuture = future;
-        // employ copy of context avoid the other call may modify the context 
content
-        this.storedContext = RpcContext.getContext().copyOf();
-        this.storedServerContext = RpcContext.getServerContext().copyOf();
+        this.storedContext = RpcContext.getContext();
+        this.storedServerContext = RpcContext.getServerContext();
     }
 
     @Override
diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java
index 043222976a..f448650bc0 100644
--- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java
+++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcContext.java
@@ -131,31 +131,6 @@ public static void restoreContext(RpcContext oldContext) {
         LOCAL.set(oldContext);
     }
 
-
-    public RpcContext copyOf() {
-        RpcContext copy = new RpcContext();
-        copy.attachments.putAll(this.attachments);
-        copy.values.putAll(this.values);
-        copy.future = this.future;
-        copy.urls = this.urls;
-        copy.url = this.url;
-        copy.methodName = this.methodName;
-        copy.parameterTypes = this.parameterTypes;
-        copy.arguments = this.arguments;
-        copy.localAddress = this.localAddress;
-        copy.remoteAddress = this.remoteAddress;
-        copy.invokers = this.invokers;
-        copy.invoker = this.invoker;
-        copy.invocation = this.invocation;
-
-        copy.request = this.request;
-        copy.response = this.response;
-        copy.asyncContext = this.asyncContext;
-
-        return copy;
-    }
-
-
     /**
      * remove context.
      *
diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExceptionFilter.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExceptionFilter.java
index 5cb047a563..bc2c07620b 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExceptionFilter.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExceptionFilter.java
@@ -82,8 +82,8 @@ protected Result doPostProcess(Result result, Invoker<?> 
invoker, Invocation inv
                 // directly throw if the exception appears in the signature
                 try {
                     Method method = 
invoker.getInterface().getMethod(invocation.getMethodName(), 
invocation.getParameterTypes());
-                    Class<?>[] exceptionClassses = method.getExceptionTypes();
-                    for (Class<?> exceptionClass : exceptionClassses) {
+                    Class<?>[] exceptionClasses = method.getExceptionTypes();
+                    for (Class<?> exceptionClass : exceptionClasses) {
                         if (exception.getClass().equals(exceptionClass)) {
                             return result;
                         }
diff --git 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java
 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java
index 7366ed1dd2..32dd1f486e 100644
--- 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java
+++ 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java
@@ -52,7 +52,7 @@
     public void testDemoProtocol() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9020/" + DemoService.class.getName() + 
"?codec=exchange")));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9020/" + DemoService.class.getName() + 
"?codec=exchange").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9020/" + DemoService.class.getName() + 
"?codec=exchange")));
         assertEquals(service.getSize(new String[]{"", "", ""}), 3);
     }
 
@@ -60,7 +60,7 @@ public void testDemoProtocol() throws Exception {
     public void testDubboProtocol() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName())));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + 
DemoService.class.getName()).addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName())));
         assertEquals(service.enumlength(new Type[]{}), Type.Lower);
         assertEquals(service.getSize(null), -1);
         assertEquals(service.getSize(new String[]{"", "", ""}), 3);
@@ -71,7 +71,7 @@ public void testDubboProtocol() throws Exception {
         assertEquals(set.iterator().next(), "aa");
         service.invoke("dubbo://127.0.0.1:9010/" + DemoService.class.getName() 
+ "", "invoke");
 
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=netty").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=netty")));
         // test netty client
         StringBuffer buf = new StringBuffer();
         for (int i = 0; i < 1024 * 32 + 32; i++)
@@ -79,7 +79,7 @@ public void testDubboProtocol() throws Exception {
         System.out.println(service.stringLength(buf.toString()));
 
         // cast to EchoService
-        EchoService echo = proxy.getProxy(protocol.refer(EchoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=netty").addParameter("timeout", 3000l)));
+        EchoService echo = proxy.getProxy(protocol.refer(EchoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=netty")));
         assertEquals(echo.$echo(buf.toString()), buf.toString());
         assertEquals(echo.$echo("test"), "test");
         assertEquals(echo.$echo("abcdefg"), "abcdefg");
@@ -90,7 +90,7 @@ public void testDubboProtocol() throws Exception {
     public void testDubboProtocolWithMina() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + 
DemoService.class.getName()).addParameter(Constants.SERVER_KEY, "mina")));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + 
DemoService.class.getName()).addParameter(Constants.CLIENT_KEY, 
"mina").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + 
DemoService.class.getName()).addParameter(Constants.CLIENT_KEY, "mina")));
         for (int i = 0; i < 10; i++) {
             assertEquals(service.enumlength(new Type[]{}), Type.Lower);
             assertEquals(service.getSize(null), -1);
@@ -105,7 +105,7 @@ public void testDubboProtocolWithMina() throws Exception {
             service.invoke("dubbo://127.0.0.1:9010/" + 
DemoService.class.getName() + "", "invoke");
         }
 
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=mina").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=mina")));
         // test netty client
         StringBuffer buf = new StringBuffer();
         for (int i = 0; i < 1024 * 32 + 32; i++)
@@ -113,7 +113,7 @@ public void testDubboProtocolWithMina() throws Exception {
         System.out.println(service.stringLength(buf.toString()));
 
         // cast to EchoService
-        EchoService echo = proxy.getProxy(protocol.refer(EchoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=mina").addParameter("timeout", 3000l)));
+        EchoService echo = proxy.getProxy(protocol.refer(EchoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName() + 
"?client=mina")));
         for (int i = 0; i < 10; i++) {
             assertEquals(echo.$echo(buf.toString()), buf.toString());
             assertEquals(echo.$echo("test"), "test");
@@ -126,11 +126,11 @@ public void testDubboProtocolWithMina() throws Exception {
     public void testDubboProtocolMultiService() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName())));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + 
DemoService.class.getName()).addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + DemoService.class.getName())));
 
         RemoteService remote = new RemoteServiceImpl();
         protocol.export(proxy.getInvoker(remote, RemoteService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + RemoteService.class.getName())));
-        remote = proxy.getProxy(protocol.refer(RemoteService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + 
RemoteService.class.getName()).addParameter("timeout", 3000l)));
+        remote = proxy.getProxy(protocol.refer(RemoteService.class, 
URL.valueOf("dubbo://127.0.0.1:9010/" + RemoteService.class.getName())));
 
         service.sayHello("world");
 
@@ -149,7 +149,7 @@ public void testDubboProtocolMultiService() throws 
Exception {
     public void testPerm() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange")));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange")));
         long start = System.currentTimeMillis();
         for (int i = 0; i < 1000; i++)
             service.getSize(new String[]{"", "", ""});
@@ -160,7 +160,7 @@ public void testPerm() throws Exception {
     public void testNonSerializedParameter() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange")));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange")));
         try {
             service.nonSerializedParameter(new NonSerialized());
             Assert.fail();
@@ -173,7 +173,7 @@ public void testNonSerializedParameter() throws Exception {
     public void testReturnNonSerialized() throws Exception {
         DemoService service = new DemoServiceImpl();
         protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange")));
-        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange").addParameter("timeout", 3000l)));
+        service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("dubbo://127.0.0.1:9050/" + DemoService.class.getName() + 
"?codec=exchange")));
         try {
             service.returnNonSerialized();
             Assert.fail();
diff --git 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/ExplicitCallbackTest.java
 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/ExplicitCallbackTest.java
index 3c8aecdd39..623be8629e 100644
--- 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/ExplicitCallbackTest.java
+++ 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/ExplicitCallbackTest.java
@@ -122,7 +122,7 @@ public String yyy(String msg) {
 
     @Test
     public void TestCallbackMultiInstans() throws Exception {
-        initOrResetUrl(2, 3000);
+        initOrResetUrl(2, 1000);
         initOrResetService();
         IDemoCallback callback = new IDemoCallback() {
             public String yyy(String msg) {
@@ -143,13 +143,14 @@ public String yyy(String msg) {
             Thread.sleep(500);
             demoProxy.unxxx2(callback);
             Assert.assertEquals(0, demoProxy.getCallbackCount());
+            System.out.println("");
 
             demoProxy.xxx2(callback2);
             Assert.assertEquals(1, demoProxy.getCallbackCount());
             Thread.sleep(500);
             demoProxy.unxxx2(callback2);
             Assert.assertEquals(0, demoProxy.getCallbackCount());
-
+            System.out.println("");
             demoProxy.xxx2(callback);
             Thread.sleep(500);
             Assert.assertEquals(1, demoProxy.getCallbackCount());
diff --git 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandlerTest.java
 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandlerTest.java
index a247170897..1d3333edbf 100644
--- 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandlerTest.java
+++ 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/telnet/ListTelnetHandlerTest.java
@@ -82,7 +82,7 @@ public void after() {
     public void testListDetailService() throws RemotingException {
         mockInvoker = mock(Invoker.class);
         given(mockInvoker.getInterface()).willReturn(DemoService.class);
-        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:30005/demo"));
+        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20885/demo"));
         given(mockInvoker.invoke(any(Invocation.class))).willReturn(new 
RpcResult("ok"));
         mockChannel = mock(Channel.class);
         
given(mockChannel.getAttribute("telnet.service")).willReturn("org.apache.dubbo.rpc.protocol.dubbo.support.DemoService");
@@ -97,7 +97,7 @@ public void testListDetailService() throws RemotingException {
     public void testListService() throws RemotingException {
         mockInvoker = mock(Invoker.class);
         given(mockInvoker.getInterface()).willReturn(DemoService.class);
-        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:30006/demo"));
+        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20885/demo"));
         given(mockInvoker.invoke(any(Invocation.class))).willReturn(new 
RpcResult("ok"));
         mockChannel = mock(Channel.class);
         
given(mockChannel.getAttribute("telnet.service")).willReturn("org.apache.dubbo.rpc.protocol.dubbo.support.DemoService");
@@ -112,7 +112,7 @@ public void testListService() throws RemotingException {
     public void testList() throws RemotingException {
         mockInvoker = mock(Invoker.class);
         given(mockInvoker.getInterface()).willReturn(DemoService.class);
-        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:30007/demo"));
+        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20885/demo"));
         given(mockInvoker.invoke(any(Invocation.class))).willReturn(new 
RpcResult("ok"));
         mockChannel = mock(Channel.class);
         given(mockChannel.getAttribute("telnet.service")).willReturn(null);
@@ -143,7 +143,7 @@ public void testListDetail() throws RemotingException {
     public void testListDefault() throws RemotingException {
         mockInvoker = mock(Invoker.class);
         given(mockInvoker.getInterface()).willReturn(DemoService.class);
-        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:30008/demo"));
+        
given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20885/demo"));
         given(mockInvoker.invoke(any(Invocation.class))).willReturn(new 
RpcResult("ok"));
         mockChannel = mock(Channel.class);
         
given(mockChannel.getAttribute("telnet.service")).willReturn("org.apache.dubbo.rpc.protocol.dubbo.support.DemoService");
diff --git 
a/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
 
b/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
similarity index 98%
rename from 
dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
rename to 
dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
index 5d27bb5655..b8eedda47e 100644
--- 
a/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
@@ -33,7 +33,7 @@
 import static org.junit.Assert.fail;
 import static org.junit.matchers.JUnitMatchers.containsString;
 
-public abstract class AbstractSerializationPersonFailTest extends 
AbstractSerializationTest {
+public abstract class AbstractSerializationPersionFailTest extends 
AbstractSerializationTest {
     @Test
     public void test_Person() throws Exception {
         try {
diff --git 
a/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
 
b/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
similarity index 96%
rename from 
dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
rename to 
dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
index 03395cb0cd..292ee8b2b9 100644
--- 
a/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
@@ -27,7 +27,7 @@
 import java.util.Map;
 import java.util.Set;
 
-public abstract class AbstractSerializationPersonOkTest extends 
AbstractSerializationTest {
+public abstract class AbstractSerializationPersionOkTest extends 
AbstractSerializationTest {
     @Test
     public void test_Person() throws Exception {
         assertObject(new Person());
diff --git 
a/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/Hessian2SerializationTest.java
 
b/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/Hessian2SerializationTest.java
index e70dfd9f63..badbbe7ef0 100644
--- 
a/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/Hessian2SerializationTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/Hessian2SerializationTest.java
@@ -30,7 +30,7 @@
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-public class Hessian2SerializationTest extends 
AbstractSerializationPersonFailTest {
+public class Hessian2SerializationTest extends 
AbstractSerializationPersionFailTest {
     {
         serialization = new Hessian2Serialization();
     }
diff --git 
a/dubbo-serialization/dubbo-serialization-jdk/src/main/java/org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java
 
b/dubbo-serialization/dubbo-serialization-jdk/src/main/java/org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java
index a6bda0aca9..2587e597cf 100644
--- 
a/dubbo-serialization/dubbo-serialization-jdk/src/main/java/org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java
+++ 
b/dubbo-serialization/dubbo-serialization-jdk/src/main/java/org/apache/dubbo/common/serialize/java/CompactedObjectInputStream.java
@@ -43,9 +43,8 @@ public CompactedObjectInputStream(InputStream in, ClassLoader 
cl) throws IOExcep
     @Override
     protected ObjectStreamClass readClassDescriptor() throws IOException, 
ClassNotFoundException {
         int type = read();
-        if (type < 0) {
+        if (type < 0)
             throw new EOFException();
-        }
         switch (type) {
             case 0:
                 return super.readClassDescriptor();
diff --git 
a/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
similarity index 98%
rename from 
dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
rename to 
dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
index 5d27bb5655..b8eedda47e 100644
--- 
a/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
@@ -33,7 +33,7 @@
 import static org.junit.Assert.fail;
 import static org.junit.matchers.JUnitMatchers.containsString;
 
-public abstract class AbstractSerializationPersonFailTest extends 
AbstractSerializationTest {
+public abstract class AbstractSerializationPersionFailTest extends 
AbstractSerializationTest {
     @Test
     public void test_Person() throws Exception {
         try {
diff --git 
a/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
similarity index 96%
rename from 
dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
rename to 
dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
index 03395cb0cd..292ee8b2b9 100644
--- 
a/dubbo-serialization/dubbo-serialization-hessian2/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
@@ -27,7 +27,7 @@
 import java.util.Map;
 import java.util.Set;
 
-public abstract class AbstractSerializationPersonOkTest extends 
AbstractSerializationTest {
+public abstract class AbstractSerializationPersionOkTest extends 
AbstractSerializationTest {
     @Test
     public void test_Person() throws Exception {
         assertObject(new Person());
diff --git 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/CompactedJavaSerializationTest.java
 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/CompactedJavaSerializationTest.java
index 86ebb5ee06..c9c45b8f4b 100644
--- 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/CompactedJavaSerializationTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/CompactedJavaSerializationTest.java
@@ -19,7 +19,7 @@
 
 import org.apache.dubbo.common.serialize.java.CompactedJavaSerialization;
 
-public class CompactedJavaSerializationTest extends 
AbstractSerializationPersonFailTest {
+public class CompactedJavaSerializationTest extends 
AbstractSerializationPersionFailTest {
     {
         serialization = new CompactedJavaSerialization();
     }
diff --git 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/JavaSerializationTest.java
 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/JavaSerializationTest.java
index 058f60512e..b7d1e0637d 100644
--- 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/JavaSerializationTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/JavaSerializationTest.java
@@ -19,7 +19,7 @@
 
 import org.apache.dubbo.common.serialize.java.JavaSerialization;
 
-public class JavaSerializationTest extends AbstractSerializationPersonFailTest 
{
+public class JavaSerializationTest extends 
AbstractSerializationPersionFailTest {
     {
         serialization = new JavaSerialization();
     }
diff --git 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/NativeJavaSerializationTest.java
 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/NativeJavaSerializationTest.java
index d090890f4e..d3779b21e2 100644
--- 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/NativeJavaSerializationTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/NativeJavaSerializationTest.java
@@ -18,7 +18,7 @@
 
 import org.apache.dubbo.common.serialize.nativejava.NativeJavaSerialization;
 
-public class NativeJavaSerializationTest extends 
AbstractSerializationPersonFailTest {
+public class NativeJavaSerializationTest extends 
AbstractSerializationPersionFailTest {
     {
         serialization = new NativeJavaSerialization();
     }
diff --git 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
 
b/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
similarity index 98%
rename from 
dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
rename to 
dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
index 5d27bb5655..b8eedda47e 100644
--- 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonFailTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionFailTest.java
@@ -33,7 +33,7 @@
 import static org.junit.Assert.fail;
 import static org.junit.matchers.JUnitMatchers.containsString;
 
-public abstract class AbstractSerializationPersonFailTest extends 
AbstractSerializationTest {
+public abstract class AbstractSerializationPersionFailTest extends 
AbstractSerializationTest {
     @Test
     public void test_Person() throws Exception {
         try {
diff --git 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
 
b/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
similarity index 96%
rename from 
dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
rename to 
dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
index 03395cb0cd..292ee8b2b9 100644
--- 
a/dubbo-serialization/dubbo-serialization-jdk/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersonOkTest.java
+++ 
b/dubbo-serialization/dubbo-serialization-kryo/src/test/java/org/apache/dubbo/common/serialize/serialization/AbstractSerializationPersionOkTest.java
@@ -27,7 +27,7 @@
 import java.util.Map;
 import java.util.Set;
 
-public abstract class AbstractSerializationPersonOkTest extends 
AbstractSerializationTest {
+public abstract class AbstractSerializationPersionOkTest extends 
AbstractSerializationTest {
     @Test
     public void test_Person() throws Exception {
         assertObject(new Person());


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to