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

iluo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new df9f998  [Dubbo-900] Fix 通过 override 修改 hessian协议的提供者的配置 不生效 #900 
(#3363)
df9f998 is described below

commit df9f998e32e1d366f14e69170108d128109e4dc0
Author: huazhongming <[email protected]>
AuthorDate: Mon Jan 28 17:41:45 2019 +0800

    [Dubbo-900] Fix 通过 override 修改 hessian协议的提供者的配置 不生效 #900 (#3363)
    
    * reExport fail fix#900
    
    * modify
    
    * use Objects.equals
    
    * compare URL for all proxy protocol
---
 .../java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java   | 6 +++++-
 .../dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java       | 4 +++-
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java
 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java
index c87f244..a77a5bd 100644
--- 
a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java
+++ 
b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/AbstractProxyProtocol.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.rpc.Result;
 import org.apache.dubbo.rpc.RpcException;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
@@ -66,7 +67,10 @@ public abstract class AbstractProxyProtocol extends 
AbstractProtocol {
         final String uri = serviceKey(invoker.getUrl());
         Exporter<T> exporter = (Exporter<T>) exporterMap.get(uri);
         if (exporter != null) {
-            return exporter;
+            // When modifying the configuration through override, you need to 
re-expose the newly modified service.
+            if (Objects.equals(exporter.getInvoker().getUrl(), 
invoker.getUrl())) {
+                return exporter;
+            }
         }
         final Runnable runnable = doExport(proxyFactory.getProxy(invoker, 
true), invoker.getInterface(), invoker.getUrl());
         exporter = new AbstractExporter<T>(invoker) {
diff --git 
a/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
 
b/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
index b2531b7..8990edf 100644
--- 
a/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
+++ 
b/dubbo-rpc/dubbo-rpc-webservice/src/test/java/org/apache/dubbo/rpc/protocol/webservice/WebserviceProtocolTest.java
@@ -18,6 +18,7 @@ package org.apache.dubbo.rpc.protocol.webservice;
 
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.rpc.Exporter;
 import org.apache.dubbo.rpc.Protocol;
 import org.apache.dubbo.rpc.ProxyFactory;
 
@@ -37,9 +38,10 @@ public class WebserviceProtocolTest {
     @Test
     public void testDemoProtocol() throws Exception {
         DemoService service = new DemoServiceImpl();
-        protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("webservice://127.0.0.1:9019/" + DemoService.class.getName() + 
"?codec=exchange")));
+        Exporter<DemoService> exporter = 
protocol.export(proxy.getInvoker(service, DemoService.class, 
URL.valueOf("webservice://127.0.0.1:9019/" + DemoService.class.getName() + 
"?codec=exchange")));
         service = proxy.getProxy(protocol.refer(DemoService.class, 
URL.valueOf("webservice://127.0.0.1:9019/" + DemoService.class.getName() + 
"?codec=exchange&timeout=3000")));
         assertEquals(service.getSize(new String[]{"", "", ""}), 3);
+        exporter.unexport();
     }
 
     @Test

Reply via email to