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